gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:11 24 4
gpt4 key购买 nike

我有一个应用程序设置很像 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 上的任何属性,它是 nil。

然后我尝试在调用 mergeChangesFromContextDidSaveNotification 之前运行上面的代码:

当我这样做时,大部分时间,我都能够访问对象的属性。在某些情况下,我会因为无法履行错误而得到一个异常(exception);该记录已从核心数据存储中删除。

我意识到,如果对象在通知到达之前的某个时间被加载到上下文中(即,如果对象在应用程序中被查看/访问),则访问已删除对象的属性将有效。

我的问题是我想对已删除的对象进行一些清理;我的 NSManagedObject 有一个我想读取的属性,然后用它来执行与该值相关的核心数据之外的一些工作。

我错过了什么?可以这样做吗?

最佳答案

你应该看看

- (void)prepareForDeletion;

并在您的 NSManagedObject 子类中覆盖它。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com