Swift-停止实体的iCloud mergeChangesFromContextDidSaveNotification
在Swift-停止实体的iCloud mergeChangesFromContextDidSaveNotification,swift,core-data,icloud,Swift,Core Data,Icloud,在println(字典)上我得到了这个 NSNotificationCenter.defaultCenter().addObserver(self, selector: "persistentStoreDidImportUbiquitousContentChanges:", name:NSPersistentStoreDidImportUbiquitousContentChangesNotification, object: coordinator) func persistentStore
println(字典)
上我得到了这个
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)
}
}
[插入:{(
0x7a1111f0,
0x7a115620
)},删除:{(
)},更新日期:{(
)}]
[插入:{(
0x78ed06f0,
0x78e94ae0
)},删除:{(
)},更新日期:{(
)}]
问题
你不能阻止它。调用
mergeChangesFromContextDidSaveNotification
时,将合并保存通知中的所有更改。没有定制
您可以使用NSManagedObjectContext
的mergePolicy
设置来控制合并更改的方式。这会影响在合并更改时,moc
加载的数据如何受到影响,例如,是保留内存更改还是覆盖更改。内置的合并策略包括nsmergebypropertyStoreTommergePolicyType
和NSOverwriteMergePolicyType
之类的内容,或者您可以创建自己的自定义策略
无论如何,试图阻止它是没有意义的。这里合并更改的要点是,这些更改已经保存到持久存储文件中,并且您要确保moc
知道这些更改。如果您以某种方式阻止moc
了解某个实体类型的更改,这些更改将仍然存在,只是现在moc
将过时
[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: {(
)}]