我正在使用 AFJSONRequestOperation 为移动应用程序使用 Objective-C 实现 HTTP 请求,并且在满足条件之前我不知道如何实现循环(即 JSON 中的 profiling_status 键的值为 1)。按下按钮时会运行请求。服务器在后台进行一些需要一段时间的计算。在服务器完成之前,profiling_status 值为 2。当它完成时,值为 1。所以,我想保持循环,直到值变为 1,然后显示 JSON。
在成功块中返回 JSON 会导致指针错误。在方法结束时返回 JSON 将返回 nil。
我有这个代码:
- (IBAction)getProfileInfo:(id)sender
{
profiling_status = 2;
NSDictionary *JSON;
while (profiling_status == 2){
JSON = [self getJSON];
profiling_status = [JSON objectForKey:@"profiling_status"];
}
NSLog(@"JSON: %@", JSON);
}
- (NSDictionary*)getJSON
{
__block NSDictionary* JSONResult = nil;
MyAPIClient *client = [MyAPIClient sharedClient];
NSString *path = [NSString stringWithFormat:@"/profile?json"];
NSURLRequest *request = [client requestWithMethod:@"GET" path:path parameters:nil];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
JSONResult = JSON;
//can’t do this ---- return JSONResult;
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
NSLog(@"%@", [error userInfo]);
}];
[operation start];
return JSONResult; //will return nil
}
有什么帮助吗?
谢谢你。