尝试从块获取数据,但NSLog(localData)显示为nil。 如何从块中获取数据?
__block NSData *localData = nil;
JBContainedURLConnection *connection = [[JBContainedURLConnection alloc] initWithURLString:flightsURLStr userInfo:nil completionHandler:^(JBContainedURLConnection *connection, NSError *error, NSString *urlString, NSDictionary *userInfo, NSData *data) {
if (nil != error) {
// Handle the error.
// A nil error indicates success!
NSLog(@"Error! %@", [error userInfo]);
return;
}
localData = [NSData dataWithData:data];
}];
NSLog(localData);
答案 0 :(得分:0)
假设这是你正在使用的Jason Brennan的NSURLConnection wrapper class:
这是一个异步调用,它是普通NSURLConnection异步加载机制的包装器。完成此方法返回后以及尝试记录数据后,将在同一个线程上触发完成块。
您可以在完成块中放置NSLog语句,您将看到在尝试记录数据后它将触发。
希望有所帮助。
答案 1 :(得分:0)
在E.Sadun Cookbook中找到解决方案:
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
localData = [NSData dataWithData:data];
}];