私はanother similar questionがあることを知っていますが、これはAFNetworkingの古いバージョン用であり、とにかくそれには本当に答えるものではありません。AFNetworking-2 waitUntilFinishedが動作しない
私は、次のコードをしている:私はこれを実行する場合
AFHTTPRequestOperationManager* manager = [AFHTTPRequestOperationManager manager];
manager.securityPolicy.allowInvalidCertificates = YES;
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setAuthorizationHeaderFieldWithUsername: currentUser() password: currentPassword()];
__block NSDictionary* response = nil;
AFHTTPRequestOperation* operation = [manager
GET: @"https://10.20.30.40:8765/foobar"
parameters: [NSDictionary dictionary]
success:^(AFHTTPRequestOperation* operation, id responseObject){
response = responseObject;
NSLog(@"response (block): %@", response);
}
failure:^(AFHTTPRequestOperation* operation, NSError* error){
NSLog(@"Error: %@", error);}
];
[operation waitUntilFinished];
NSLog(@"response: %@", response);
...
、私は私のログに何が表示されますは、次のとおりです。
2013-12-09 09:26:20.105 myValve[409:60b] response: (null)
2013-12-09 09:26:20.202 myValve[409:60b] response (block): {
F00005 = "";
F00008 = "";
F00013 = "";
}
最初後waitUntilFinished
火災でNSLog
。私はそれが二番目に発射することを期待した。私は何が欠けていますか?
残念ながら、オプション#1は物事を完全にハングアップします。どちらもブロックすることはありません。なぜそれを置くのかは分かりませんが、そうしています。 –
私は「UIがぶら下がっている」ということを理解しています。このケースで私が苦労しているのは、ローカルモデルを更新するためのRESTクエリです。だから私は、このAFのものをモデルクラスに入れて更新をしたいと思っています。そこで、私は、andWhenYourDone:ブロックを使用してこれらのメソッドを拡張しなければならなくなり、必要に応じてUIの更新をトリガーすることができます。 –
@TravisGriggsそして、あなたのモデルの 'updateModel'メソッドブロックパラメータを与えてください(AFNetworking自身が使用する' success'ブロックと 'failure'ブロックと違うものではありません)。このようにして、ビューコントローラーは効果的に「モデルを更新し、終了したらx、y、zを実行する」と言うことができます。改訂版の回答を参照してください。 – Rob