我在填充JSON文件中的核心数据时正在执行此操作:
NSString *urlString = [value objectForKey:@"url"];
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLResponse *response = nil;
NSError *error = nil;
NSData *dataResponse = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
[managedObject setValue:dataResponse forKey:@"image"];
AFNetworking有更好的(异步)方式吗?这种情况的最佳方法是什么?它是否必须是同步的,因为我们正在处理CoreData?
更新:立即尝试:
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
[managedObject setValue:data forKey:@"image"];
}];
出于某种原因,当我稍后访问托管对象时,image属性始终为null,即使上面的* data在完成处理程序中不为null。图像在同步方法中保存得很好。我错过了什么?
答案 0 :(得分:0)
NSURLConnection
也可以处理异步。
您可以使用的方法是(iOS> = 5)
+ sendAsynchronousRequest:queue:completionHandler:
如果您需要定位iOS< 5然后使用NSURLConnection
的委托模式。可以在NSURLConnection and grand central dispatch中找到一个好的包装器。
关于核心数据,我想说这取决于。如果您需要存储的数据很便宜,请在主线程中进行。相反,你有三种不同的方法:
NSOperation
内启动NSOperationQueue
并在后台进行长时间工作处理(2)或(3)时,请注意核心数据约束(线程约束)。
希望有所帮助。
P.S。如果你想知道其他事情,请告诉我。
答案 1 :(得分:0)
NSURLConnection有sendAsynchronousRequest:queue:completionHandler:
条消息。