我目前正在做這從JSON文件填充核心數據時:AFNetworking替代sendSynchronousRequest用於填充CoreData
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?
UPDATE:現在嘗試此:
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
[managedObject setValue:data forKey:@"image"];
}];
因爲當我以後要進入管理對象某種原因,圖像屬性總是空,即使上述*的數據是不是在完成處理程序無效。在同步方法中,圖像可以很好地保存。我錯過了什麼?
在方法名稱的'synchronous'部分的前面添加'a'字母... – 2012-09-07 17:43:27
@ H2CO3簡潔而好的評論+1 –
我認爲您需要在上下文中執行「保存」。但要注意線程。像你一樣從不同線程訪問「NSManagedObject」和「NSManagedObjectContext」是容易出錯的。爲了避免這種情況而不是傳遞一個新的隊列,使用'NSOperationQueue mainQueue'作爲'NSURLConnection'。 –