我有一个NSManagedObject已被删除,包含该托管对象的上下文已被保存.据我所知,如果核心数据在下一次保存操作中要求持久存储删除对象,isDeleted将返回YES.然而,由于保存已经发生,isDeleted返回NO.

判断NSManagedObject是否已被删除after其包含的上下文是否已保存的好方法是什么?

(如果您想知道为什么引用已删除托管对象的对象没有意识到删除,这是因为删除和上下文保存是由使用performSelectorOnMainThread:withObject:waitUntilDone:执行删除和保存的后台线程启动的.)

推荐答案

判断托管对象的上下文似乎有效:

if (managedObject.managedObjectContext == nil) {
    // Assume that the managed object has been deleted.
}

从苹果公司关于managedObjectContext.

此方法可能返回nil,如果 接收方已从ITS中删除 上下文.

如果接收器出现故障,则调用 此方法不会导致它触发.

这两件事似乎都是好事.

UPDATE:如果您试图测试使用objectWithID:检索的托管对象是否已被删除,请查看Dave Gallagher's answer.他指出,如果使用已删除对象的ID调用objectWithID:,返回的对象将是一个错误,notmanagedObjectContext设置为nil.因此,您不能简单地判断它的managedObjectContext以测试它是否已被删除.如果可以的话,使用existingObjectWithID:error:.如果不是,例如,你的目标是Mac OS 10.5或iOS 2.0,你需要做一些其他的事情来测试删除.详情见his answer.

Ios相关问答推荐

如何访问iOS模拟器中的zoom 设置?(在搜索中列出,但不可见)

磁盘上的Objective-C ISA指针与实例化对象时的比较

Xcode 15模拟器用x86_64编译

如何将 Info.plist 文件添加到 Xcode for admob,错误 添加后会产生多个命令

SKScene 的更新功能似乎不起作用

卡在 Apple 的 SwiftUI 教程第 5 章(更新应用数据)

如何在 Swift 3 中根据 UIImage 的大小/比率调整 UIImageView 的大小?

UICollectionView - 动态单元格高度?

如何在导航栏右侧添加多个 UIBarButtonItem?

如何比较两个 UIImage 对象

当键盘出现在 iOS 中时,将 UIView 上移

如何用 Swift 圆化 UILabel 的边缘

无论我将构建版本或应用程序版本更改为什么,都会出现 ITEMS-4238冗余二进制上传错误

如何启用滑动以删除 TableView 中的单元格?

如何以编程方式切换 UISegmentedControl?

水平滚动 UICollectionView 时对齐单元格的中心

SRCROOT 和 PROJECT_DIR 有什么区别?

UISegmentedControl 以编程方式更改段数

Swift - 获取设备的 WIFI IP 地址

你如何以编程方式从视图控制器中画一条线?