NSNotificationCenter.defaultCenter().addObserver(self, selector: "persistentStoreDidImportUbiquitousContentChanges:", name:NSPersistentStoreDidImportUbiquitousContentChangesNotification, object: coordinator)
func persistentStoreDidImportUbiquitousContentChanges(notification: NSNotification) {
let dictionary = notification.userInfo!
println(dictionary)
var moc: NSManagedObjectContext = self.managedObjectContext!
moc.performBlock { () -> Void in
moc.mergeChangesFromContextDidSaveNotification(notification)
}
}
在println(dictionary)
我得到了这个;
[inserted: {(
0x7a1111f0 <x-coredata://5D1E5D9E-BB22-445E-BF1F-9E7012381FA1/People/p5>,
0x7a115620 <x-coredata://5D1E5D9E-BB22-445E-BF1F-9E7012381FA1/Settings/p5>
)}, deleted: {(
)}, updated: {(
)}]
[inserted: {(
0x78ed06f0 <x-coredata://5D1E5D9E-BB22-445E-BF1F-9E7012381FA1/People/p6>,
0x78e94ae0 <x-coredata://5D1E5D9E-BB22-445E-BF1F-9E7012381FA1/Settings/p6>
)}, deleted: {(
)}, updated: {(
)}]
问题
答案 0 :(得分:0)
你没有阻止它。当您致电mergeChangesFromContextDidSaveNotification
时,您将合并保存通知中的所有更改。没有定制。
您可以使用NSManagedObjectContext
的{{1}}设置来控制 如何合并更改。这会影响合并更改时mergePolicy
加载的数据的影响 - 例如,是保留内存中的更改还是覆盖它们。内置合并政策包括moc
和NSMergeByPropertyStoreTrumpMergePolicyType
等内容,您也可以创建自己的自定义政策。
无论如何,试图阻止它都没有意义。这里合并更改的重点是这些更改已保存到持久性存储文件中,并且您确保NSOverwriteMergePolicyType
知道这些更改。如果您以某种方式阻止moc
了解某个实体类型的更改,那么这些更改仍然存在,只有现在moc
才会过时。