objective-c - 访问 iCloud 通知中已删除的对象

标签 objective-c ios core-data icloud nsmanagedobjectcontext

我有一个应用程序,其设置与 iCloudCoreDataRecipes 示例非常相似(即,将 Core Data 与 iCloud 结合使用)。在应用程序委托(delegate)中,我观察到

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子类中覆盖它。

关于objective-c - 访问 iCloud 通知中已删除的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11317455/

相关文章:

ios - 错误 : User interaction disabled in lower parts of UIScrollView

.net - iOS中如何实现用户注册和认证?

ios - 如何在 Xcode 的 AppDelegate 下创建一个循环?

ios - 没有这样的模块 'AgoraRtcKit' Xcode Swift 错误

cocoa - 在核心数据中建模关联类的最佳方法是什么?

ios - StackMob本地核心数据存储

ios - XMPP 主机名问题

ios - Paypal 信用卡交易在沙盒模式下不起作用

ios - 从 Objective-C 的 View Controller 中的类方法访问 ViewController 本身

ios - 多点连接发送和接收 NSManagedObject