【发布时间】:2013-10-18 19:07:25
【问题描述】:
我需要从 JSON 下载数据,并将数据分配给 NSOperationQueue 之外的 NSData。这是我的代码:
-(void)parsingInfo {
NSURL *url = [NSURL URLWithString:@"http://someJSON.json"];
NSData *data;
[NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:url] queue:downloadQueue completionHandler:^(NSURLResponse* response, NSData* jsonData, NSError* error){
if(error)
{
// Error Downloading data
NSLog(@"Error");
}
else
{
data = jsonData;
}
}];
if (data) {
NSError *error;
NSDictionary *JSONDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
application = [JSONDic objectForKey:@"Applications"];
NSArray *featured = [JSONDic objectForKey:@"Featured"];
NSDictionary *dict2;
dict2 = [featured objectAtIndex:0];
} else {
NSLog(@"Error, no data!");
}
}
【问题讨论】:
-
将代码的
if(data)部分移动到 NSOperation 队列中。基本上,您的函数将触发一个新线程来运行下载,然后将立即继续检查数据是否存在(可能在下载开始之前)。 -
好的,但是数组应用程序将为零
-
好的,那么当异步请求完成时,使用一个知道数组
application是什么的新函数进入主线程。
标签: ios json xcode nsoperationqueue