私のプロジェクトでは、この方法で作成された JSON ファイルをダウンロードする必要があります。
[{"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 秒間実行されることです。とても遅いです。より迅速に処理するには、どのような種類のソリューションを採用できますか? または、このメソッドをバックグラウンド プロセス内に配置する必要がありますか? ありがとう