我有一个应用程序设置非常类似于 iCloudCoreDataRecipes 示例(即,将 Core Data 与 iCloud 结合使用)。在应用程序委托中,我观察到
NSPersistentStoreDidImportUbiquitousContentChangesNotification
当通知到达时,我打电话
[context mergeChangesFromContextDidSaveNotification:note];
当收到此通知时,我想要执行一些额外的处理,但在使用 NSDeletedObjectsKey 集中存在的 NSManagedObjectID 标识的对象时遇到问题。
NSSet *deletedObjects = [info objectForKey:NSDeletedObjectsKey];
for (NSManagedObjectID *oid in deletedObjects) {
NSManagedObject *obj = [context objectWithID:oid];
}
如果我访问任何属性obj,为零。
然后我尝试在调用 mergeChangesFromContextDidSaveNotification 之前运行上面的代码:
当我这样做时,我能够,大多数时候,访问对象的属性。在某些情况下,我会得到一个例外无法履行过错;该记录已从核心数据存储中删除。
我意识到,如果在通知到达之前某个时间将对象加载到上下文中(即,如果在应用程序内查看/访问对象),则访问已删除对象的属性将起作用。
我的问题是我想做一些与已删除对象相关的清理工作;我的 NSManagedObject 有一个属性,我想读取该属性,然后用它来执行与该值相关的核心数据之外的一些工作。
我缺少什么?是否有可能做到这一点?
你可能应该看看
- (void)prepareForDeletion;
并在你的NSManagedObject
子类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)