2016-03-23 10 views
0

Ich möchte die Version aus der URL bekommen, so schreibe ich wie folgt aus:Wie gebe ich das Objekt vom Block zurück, seit der Return zuerst ausgeführt wird?

- (NSInteger)versionOnLine { 
__block NSInteger ver = 0; 
NSString *urlStr = [ServerURL stringByAppendingString:@"version.json"]; 
[[TXYManager sharedInstance] GET:urlStr 
        parameters:nil 
         progress:^(float progess) { 
         NSLog(@"progess is %f",progess); 
         } success:^(id responseObject) { 
         NSLog(@"download version file successfully"); 
         if (!responseObject) { 
          return ; 
         } 
         ver = [[responseObject objectForKey:@"version"] integerValue]; 
         NSLog(@"version : %ld",(long)ver); 

         } failure:^(NSError *error) { 
         NSLog(@"%@",error); 
         }]; 
    return ver; 
} 

Aber die Rückkehr zuerst ausgeführt wird, dann wird der Erfolg ausgelöst wird.

Wie kann ich den aktualisierten Wert erhalten?

Antwort

2

Im Erfolgsfall, rufen Sie etwas, das die zurückgegebene Version verarbeitet. Oder den Aufruf an die schlecht benannte GET:parameters:progress:success:failure: Methode synchron machen.

I.e. Im Erfolgsblock tun:

dispatch_async(... get main queue ..., ^{ 
    [self dealWithVersions:ver]; 
}); 

Und -versionOnLine Rückkehr (void) machen.

+0

danke für die Hilfe – melody5417

+0

Danke für die Hilfe, ich weiß nur, dass ich auf den Scheck klicken sollte, um die akzeptierte Antwort zu markieren. – melody5417