Como implementar corretamente uma classe de serviços em meu aplicativo iOS?

Meu header atual: implementar uma classe de modelo especificamente para chamadas de serviço para meu aplicativo de trilhos.

Aqui está o cenário:

Eu tenho uma classe chamadaServiço que é uma subclasse de NSObject.O arquivo de implementação tem alguns métodos definidos ... vamos verdoSignUp.estou usandoAFNetworking para se comunicar com a API.Do meuSignUpViewController, Eu crio uma instância do meuServiço classe e chamadadoSignUpO método funciona como esperado e recebo a resposta adequada do servidor.

Agora vem a parte que eu não entendo completamente:

AFNetworking utiliza blocos para suas chamadas de serviço.Dentro desucesso bloco eu chamo um método auxiliar chamadohandleSignUp (também emServiço classe). Esse método essencialmente analisa o JSON e eu crio um novoDo utilizador (Subclasse NSObject) fora disso. ohandSignUp método, em seguida, retorna oDo utilizador objeto.

Neste ponto eu tenho um novoDo utilizador objeto e eu preciso enviar esse objeto de volta para o meuSignUpViewController... Como eu posso fazer isso?

Devo tentar adicionar esse objeto aoAppDelegate e acessá-lo a partir doSignUpViewController? Esta solução poderia funcionar para acessar várias propriedades globais, mas quandoSignUpViewController sabe quando acessá-lo?Devo tentar adicionar uma referência aoSignUpViewController noServiço classe? Isso parece contraproducente ... Eu poderia também adicionar o métododoSignUp ehandSignUp aoSignUpViewController. Parece-me o meuServiço A classe não deve estar ciente de nenhum outro viewControllers.

Veja abaixo os meus exemplos de código:

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];
 }

Mais uma vez, todo esse código faz o que é suposto fazer ... Eu só preciso saber como tudo deve se comunicar. Como posso alertarSignUpViewController ahandleSignUp foi chamado e um novoDo utilizador objeto está disponível?

Obrigado pelo seu tempo, Andre

questionAnswers(4)

yourAnswerToTheQuestion