Wie kehre ich von einer asynchronen NSURLConnection zur aufrufenden Klasse zurück?

Ich habe die folgende Klasse, die eine HTTP-Post-Anfrage asynchron macht, um Probleme im Haupt-UI-Thread zu vermeiden:

@implementation DataFeeder

-(void) doLookup:(NSString *)inputValue
{
    NSString *myRequestString = [NSString stringWithFormat:@"val=%@", inputValue];
    NSMutableData *myRequestData = [ NSMutableData dataWithBytes: [ myRequestString UTF8String ] length: [ myRequestString length ] ];

    NSURL * myUrl = [NSURL URLWithString: @"http://mywebsite/results.php"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: myUrl]; 
    [request setHTTPMethod: @"POST"];
    [request setHTTPBody: myRequestData];
    [request setTimeoutInterval:10.0];

    [[NSURLConnection alloc] initWithRequest:request delegate:self];
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    responseData = [[NSMutableData alloc] init];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [responseData appendData:data];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    // Show error message
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    // Use responseData
    // Got all my response data here, so build up an object ready to send back
}

@end

Ich rufe das Obige von meinem anViewController Verwenden Sie die folgende Codezeile:

MyObject * myObj = [feeder doLookup:@"SomeStaticStringForNow"];

So verstehe ich das also:

DasdoLookup führt die Anfrage auf einer asynchronen Verbindung aus.Wenn die Daten vollständig geladen wurden, wird sie aufgerufenconnectionDidFinishLoadingSobald die Daten geladen wurden, baue ich aus den Antwortdaten ein Objekt auf, das ich an den aufrufenden Controller zurücksende

Wie kann ich den anrufenden Controller abhören lassen? Muss ich im ViewController meine eigenen Callback-Methoden implementieren, die auf den Aufruf warten und dann einen Spinner stoppen und die Benutzeroberfläche basierend auf dem Inhalt von aktualisieren?myObj ?

Ich hoffe, dass es einen wirklich einfachen Weg gibt, den ich übersehen habe ...

Vielen Dank

Antworten auf die Frage(3)

Ihre Antwort auf die Frage