从块获取NSData

时间:2011-12-03 11:43:41

标签: objective-c-blocks

尝试从块获取数据,但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);

2 个答案:

答案 0 :(得分:0)

假设这是你正在使用的Jason Brennan的NSURLConnection wrapper class

这是一个异步调用,它是普通NSURLConnection异步加载机制的包装器。完成此方法返回后以及尝试记录数据后,将在同一个线程上触发完成块。

您可以在完成块中放置NSLog语句,您将看到在尝试记录数据后它将触发。

希望有所帮助。

答案 1 :(得分:0)

在E.Sadun Cookbook中找到解决方案:

[[NSOperationQueue mainQueue] addOperationWithBlock:^{ 
localData = [NSData dataWithData:data]; 
}];