我正在将CoreData与多个上下文一起使用(而不是“父子”)。因此,我正在使用NSManagedObjectContextDidSaveNotification
观察者来更新不同上下文中的信息。我面临的一个有线问题是,使用NSManagedObjectContextDidSaveNotification
在主线程上更新后台线程上的已保存数据时,如果将来我在主线程上下文上应用回滚,则会回滚更新的信息。
谁能解释为什么会这样?
NSMergePolicy *policy = [[NSMergePolicy alloc] initWithMergeType:NSMergeByPropertyStoreTrumpMergePolicyType];
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if ([NSThread isMainThread]) {// main thread context
if (!self.managedObjectContextMainThread) {
self.managedObjectContextMainThread = [[NSManagedObjectContext alloc] init];
[self.managedObjectContextMainThread setMergePolicy:policy];
[self.managedObjectContextMainThread setPersistentStoreCoordinator:coordinator];
}
}else{
context = [[NSManagedObjectContext alloc] init];
[context setPersistentStoreCoordinator:coordinator];
[context setMergePolicy:policy];
}