0

バックグラウンド スレッドからいくつかのエンティティを変更する必要があるため、次のようにします。

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 で関数を終了するだけです。シミュレーターで発生します。バックグラウンドスレッドからデータを変更する正しい方法ですか?

4

1 に答える 1