如何避免 Fetching Core data Entity as Fault?

How to avoid Fetching Core data Entity as Fault?

在我的屏幕转换期间,我有一个核心数据模型 class 对象,它从一个对象传递到另一个对象 class。但在此期间有时它 "nil" 并且当我尝试记录它时我发现它返回了一个错误。在获取它时我设置了:

        fetchRequestObject.returnsObjectsAsFaults = false

我是核心数据的新手。下面是我尝试打印对象时的日志:

    Optional<"MyEntity">
      - some : <ProjectName.MyEntity: 0x2822acdc0> (entity: "MyEntity"; id: 0x9ddeded1ada58e31 <x-coredata://27FC66FC-4FDF-4B40-9541-F4E90622906C/MyEntity/p34705> ; data: <fault>)

它多次打印并使用其属性和值正常工作。但其他时候是 "nil"。

我遇到过类似的问题

故障通常无需担心(CoreData 会自动触发故障并在您访问对象的任何属性时立即填充对象)。

但在这种情况下,我怀疑发生了更邪恶的事情:CoreData 是在该获取方法中本地实例化的,我担心它会在该方法完成后立即被释放(与关联的 managedObjectContext 一起)。因此,您的 return 数组包含来自已释放上下文的 NSManagedObjects。要检查,尝试将 managedObjectContext 设为 属性(全局变量)而不是局部变量。这应该足以保持对上下文的永久引用(这反过来将对底层堆栈具有强引用)并防止它被释放。