0

私のコードは次のようになります。

dispatch_async(background_save_queue, ^{

        NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init];
        [context setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy];
        [context setPersistentStoreCoordinator:coordinator];
        [[NSNotificationCenter defaultCenter] addObserver:mainContext selector:@selector(mergeChangesFromContextDidSaveNotification:) name:NSManagedObjectContextDidSaveNotification object:context];


        //code to create objects with core data in context ("context" variable)

        [context save:nil];
        [context release];
}

また、マルチスレッドを使用しない (コンテキストが 1 つだけの) 同様のコードは、はるかにうまく機能します。

私のコードは間違っていますか?また、コア データ オブジェクトをマルチスレッドで埋める他の例はありますか?

4

1 に答える 1

0

最後に、別のスレッドがメインのスレッドより遅くないことを確認しました。問題は、データ ソースに多数のレコードがあり、このレコードが既にデータベースに書き込まれている場合、各レコードに対してチェックを実行する必要があることです。したがって、データベース作成プロセスの速度は、レコード数とデータベース構造に大きく依存します。

于 2013-09-26T15:51:11.083 に答える