NSManagedObjectContext

NSManagedObjectContext

在我的多线程应用程序中,主线程和一个或多个后台线程可以同时访问,获取和更改我的核心数据存储区中的信息。对于每个线程,我正在创建一个新的NSManagedObjectContext。但是,NSManagedObjectContext的每个实例都使用相同的“NSPersistentStoreCoordinator”实例(存储在单个实例中的其他位置)。

我的问题是关于NSManagedObjectContext的每个实例的合并策略。如果我为后台线程(NSMergeByPropertyStoreTrumpMergePolicy)设置一个合并策略,为主线程设置另一个策略(NSMergeByPropertyObjectTrumpMergePolicy),则有本质上的好处吗?

在我的NSMangagedObjectContext getter 中,我具有以下条件:

    if ( [NSThread isMainThread] ) {

        [_context setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy];

    } else {

        [_context setMergePolicy:NSMergeByPropertyStoreTrumpMergePolicy];
    }

谢谢你。

编辑:是否有必要?对于两种类型的线程,我是否都应该默认一个策略,而不是其他策略?

最佳答案

我最终还是采用了这种解决方案(一年多以前),但是由于最近没有收到有关该问题的答案,所以我决定自己提出。

NSManagedObjectContext *context;

if ( [NSThread isMainThread] ) {

    context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
    [context setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy];

} else {

    context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
    [context setMergePolicy:NSMergeByPropertyStoreTrumpMergePolicy];

}

关于objective-c - NSMergeByPropertyObjectTrumpMergePolicy与NSMergeByPropertyStoreTrumpMergePolicy,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13130350/

10-09 13:20