Wie implementiere ich eine Services-Klasse richtig in meine iOS-Anwendung?

Mein aktueller Head Scratcher: Implementierung einer Modellklasse speziell für Serviceaufrufe bei meiner Rails-Anwendung.

Hier ist das Szenario:

Ich habe eine Klasse namensBedienung das ist eine Unterklasse von NSObject.In der Implementierungsdatei sind einige Methoden definiert. Schauen wir uns das andoSignUp.ich benutzeAFNetworking mit dem api zu kommunizieren.Von meinemSignUpViewControllerIch erstelle eine Instanz von meinemBedienung Klasse und AnrufdoSignUpDie Methode funktioniert wie erwartet und ich erhalte die richtige Antwort vom Server.

Jetzt kommt der Teil, den ich nicht ganz verstehe:

AFNetworking Verwendet Blöcke für seine Serviceaufrufe.In derErfolg block Ich rufe eine Hilfsmethode aufhandleSignUp (auch inBedienung Klasse). Diese Methode analysiert im Wesentlichen den JSON und ich erstelle einen neuenNutzer (NSObject Unterklasse) raus. DashandSignUp Methode gibt dann die zurückNutzer Objekt.

Zu diesem Zeitpunkt habe ich eine neueNutzer Objekt und ich muss das Objekt zurück zu meinem sendenSignUpViewController... Wie kann ich das machen?

Sollte ich versuchen, dieses Objekt zumAppDelegate und greifen Sie von derSignUpViewController? Diese Lösung könnte funktionieren, um auf verschiedene globale Eigenschaften zuzugreifenSignUpViewController Wissen Sie, wann Sie darauf zugreifen können?Sollte ich versuchen, einen Verweis auf dieSignUpViewController in demBedienung Klasse? Das scheint kontraproduktiv zu sein ... ich könnte die Methode genauso gut hinzufügendoSignUp undhandSignUp zumSignUpViewController. Es scheint mir wie meineBedienung Die Klasse sollte keine anderen viewController kennen.

Unten finden Sie meine Codebeispiele:

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

Wiederum macht all dieser Code das, was er tun soll ... Ich muss nur wissen, wie alles kommunizieren soll. Wie kann ich den alarmieren?SignUpViewController dashandleSignUp wurde angerufen und eine neueNutzer Objekt ist verfügbar?

Danke für deine Zeit, Andre

Antworten auf die Frage(4)

Ihre Antwort auf die Frage