Jak poprawnie zaimplementować klasę Services w mojej aplikacji na iOS?

Mój obecny scratcher na głowę: wdrożenie klasy modelowej specjalnie do wywołań serwisowych do mojej aplikacji szyny.

Oto scenariusz:

Mam klasę o nazwieUsługa to jest podklasa NSObject.Plik implementacyjny ma kilka zdefiniowanych metod… spójrzmy na todoSignUp.ja używamAFNetworking komunikować się z api.Od mojegoSignUpViewController, Tworzę instancję mojegoUsługa klasa i połączeniedoSignUpMetoda działa zgodnie z oczekiwaniami i otrzymuję właściwą odpowiedź z serwera.

Teraz przychodzi część, której nie rozumiem w pełni:

AFNetworking wykorzystuje bloki do swoich zgłoszeń serwisowych.W środkupowodzenie blok Nazywam metodę helperahandleSignUp (także wUsługa klasa). Ta metoda zasadniczo analizuje JSON i tworzę nowyUżytkownik (Podklasa NSObject) z niego. ThehandSignUp metoda następnie zwracaUżytkownik obiekt.

W tym momencie mam nowyUżytkownik obiekt i muszę wysłać ten obiekt z powrotem do mojegoSignUpViewController... Jak mogę to zrobić?

Czy powinienem spróbować dodać ten obiekt doAppDelegate i uzyskaj do niego dostęp zSignUpViewController? To rozwiązanie może uzyskać dostęp do różnych właściwości globalnych, ale kiedySignUpViewController wiedzieć kiedy uzyskać do niego dostęp?Czy powinienem spróbować dodać odniesienie doSignUpViewController wUsługa klasa? To wydaje się być nieproduktywne ... Równie dobrze mogę dodać metodędoSignUp ihandSignUp doSignUpViewController. Wydaje mi się, że to mojeUsługa klasa nie powinna wiedzieć o żadnych innych kontrolerach widoku.

Zobacz poniżej przykłady kodu:

Service.h

//Service.h
#import <UIKit/UIKit.h>
#import "AFNetworking.h"
@interface Services : NSObject
- (void) doSignUp:(NSMutableDictionary*)params;
@end

Service.m

// Service.m
 #import "Services.h"
 #import "Config.h"
 @implementation Services

 - (void) doSignUp:(NSMutableDictionary*)params {
     NSURL *url = [NSURL URLWithString:@"http://MYURL.COM"];
     AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
     NSURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"signup.json" parameters:params];
     AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
                                    success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
         [self handleSignUp:JSON];
     } failure:nil];
     [operation start];
 }

 - (User*) handleSignUp:(NSMutableArray*)json {
     User * user = nil;
     if ([[json valueForKey:@"success"] isEqualToString:@"true"]) {
           // create user here ...
     }
     return user;
 }

SignUpViewController.h

#import "Service.h"
 @interface SignUpViewController : UIViewController {
     Service * service;
 }

 @property (nonatomic, strong) Service * service;

SignUpViewController.m

#import "SignUpViewController.h"
 @interface SignUpViewController ()
 @end

 @implementation SignUpViewController

 @synthesize service = __service;
 - (IBAction) initSignUp:(id)sender {
      // create params...
      [self.service doSignUp:params];
 }

Ponownie, cały ten kod robi to, co powinien zrobić ... Muszę tylko wiedzieć, jak to wszystko powinno się komunikować. Jak mogę powiadomićSignUpViewController handleSignUp został wywołany i nowyUżytkownik obiekt jest dostępny?

Dziękuję za rozmowę, Andre

questionAnswers(4)

yourAnswerToTheQuestion