Synchrone AFNetworking Anrufe

Ich bin derzeit mit AFNetworking in einem meiner iPhone app. Es ist wirklich eine handliche Bibliothek, um asynchrone Aufrufe. Allerdings lief ich in Situationen in meiner Anwendung, wo ich brauche, um die Daten vom server, um vorwärts zu bewegen. Also dachte ich, dass dieser Weg wartet die Antwort zurück.

    MyAFNetworkClient *httpClient = [MyAFNetworkClient sharedClient];

    NSURLRequest *request = [httpClient requestWithMethod:@"GET" path:path parameters:nil];

__block int status = 0;

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {

    [[NSNotificationCenter defaultCenter] postNotificationName:@"notificationName" object:JSON];

} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON){
    @throw error.userInfo;
    status = 2;
    NSLog(@"Error... Status Code 2");

}];
[httpClient enqueueHTTPRequestOperation:operation];
[httpClient.operationQueue waitUntilAllOperationsAreFinished];

while (status == 0)
{
    //run runloop so that async dispatch can be handled on main thread AFTER the operation has
    //been marked as finished (even though the call backs haven't finished yet).
    [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode
                             beforeDate:[NSDate date]];
}

Mit diesem Stück code, ich bin in der Lage, die Antwort zu warten wieder aus dem server und in der Lage, weiter zu gehen. Es schien wirklich um mein problem zu lösen, jedoch nicht sicher, ob dies ist eine gute Möglichkeit, um die Aufrufe. Wenn es ist, ist es ein gutes design-Prinzip, wo ich kann, halten Sie den code gemeinsame und verwenden Sie es auf meine Anwendung.

Danke

  • Ich denke, die Antworten/Kommentare hier veranschaulichen die Beurteilung aufgrund der Natur dieser Frage.
InformationsquelleAutor Harish | 2013-05-16
Schreibe einen Kommentar