在我的多线程应用程序中,主线程和一个或多个后台线程可以同时访问,获取和更改我的核心数据存储区中的信息。对于每个线程,我正在创建一个新的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/