在我的項目,我應該下載這樣做了一個JSON文件:的iOS:更新核心數據DB需要大量的時間
[{"id":"2","n":"One"},{"id":"2","n":"Two"},{"id":"2","n":"Three"},...]
我的代碼是這樣的:
- (void) startPopulate:(NSArray *)array{
NSManagedObjectContext *context = [[self sharedAppDelegate] managedObjectContext];
NSFetchRequest *fetchRequest=[NSFetchRequest fetchRequestWithEntityName:@"Myentity"];
NSError *error = nil;
for (id element in array){
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"id == %@",[element objectForKey:@"id"]]];
Myentity *myE = [[context executeFetchRequest:fetchRequest error:&error] lastObject];
//update
if (myE != nil){
myE.id_e = [element objectForKey:@"id"];
myE.name = [element objectForKey:@"n"];
}
//new element
else{
Myentity *myE = [NSEntityDescription insertNewObjectForEntityForName:@"Myentity" inManagedObjectContext:context];
myE.name = [element objectForKey:@"n"];
myE.id_e = [element objectForKey:@"id"];
}
}
if (![context save:&error]) {
NSLog(@"couldn't save: %@", [error localizedDescription]);
}
else{
NSLog(@"DB UPDATED");
}
}
正如你可以看到我在方法中傳遞字典數組,並檢查實體是否存在。 它工作正常,我沒有詳細的問題。 '問題',如果它是調用它的方式是,我有12000元素,這種方法運行約53秒。這非常慢。 我可以採用什麼類型的解決方案來提高速度? 或者我應該把這個方法放在後臺進程中? 謝謝
有一些[Apple的文檔中描述的技術](https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreData/Articles/cdImporting.html)可以幫助你。 – Alladinian
可能的重複[什麼是最有效的方式來同步核心數據與JSON API](http://stackoverflow.com/questions/14109501/what-is-the-most-efficient-way-to-sync-core- data-with-json-api) –