5

NSManagedObjectContextConcurrencyType のドキュメントからは何の意味もありません。次の状況では、どのタイプを使用しますか? また、その理由は何ですか?

- (void)viewDidLoad
{
    self.managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:???];
    [self loadRecordsFromCoreData];
}


- (void)loadRecordsFromCoreData {

[self.managedObjectContext performBlockAndWait:^{
    //[self.managedObjectContext reset]; //do I need to do this?
    NSError *error = nil;
    NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Item"];

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"display == YES"];
    [request setPredicate:predicate];
    [request setSortDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"order" ascending:YES]]];

    self.items = nil;
    self.items = [self.managedObjectContext executeFetchRequest:request error:&error];

}];

[self displayItems];
}

-displayItems は、item.image、item.title、item.descriptionText など、self.items 配列内のオブジェクトのプロパティに基づいてビューを表示します。

4

1 に答える 1

4

NSMainQueueConcurrencyType.

ビューが読み込まれたなどの UI イベントは、メイン スレッドで発生します。メイン スレッド (この場合は self.items) でオブジェクトを操作するので、オブジェクトがコンテキストにフェッチされ、そのスレッドにも保存されるようにする必要があります。

NSPrivateQueueConcurrencyTypeバックグラウンドスレッドで作業を行うコンテキスト用です。

于 2012-09-13T07:35:53.947 に答える