バックグラウンド スレッドからいくつかのエンティティを変更する必要があるため、次のようにします。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSManagedObjectContext *parent = [Default managedObjectContext];
NSManagedObjectContext *editContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:parent.concurrencyType];
[editContext setPersistentStoreCoordinator:[Default persistentStoreCoordinator]];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(saveChanges:)
name:NSManagedObjectContextDidSaveNotification
object:editContext];
NSFetchRequest *request = [NSFetchRequest new];
...
NSArray *fetchedObjects = [context executeFetchRequest:request error:nil];
NSError *error;
[editContext save:&error]
});
動作していますが、動作を停止することもあり、executeFetchRequest:request で関数を終了するだけです。シミュレーターで発生します。バックグラウンドスレッドからデータを変更する正しい方法ですか?