【问题标题】:How to avoid Fetching Core data Entity as Fault?如何避免将核心数据实体作为错误获取?
【发布时间】:2019-05-21 00:54:52
【问题描述】:

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

        fetchRequestObject.returnsObjectsAsFaults = false

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

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

很多时候,它的属性和值都可以打印并正常工作。但其他时候它是“零”。

【问题讨论】:

  • 问题是崩溃还是对象出错?如果它崩溃了,请添加错误消息和崩溃的代码。

标签: ios swift core-data nsfetchrequest


【解决方案1】:

我也遇到过类似的问题

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

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

【讨论】:

    猜你喜欢
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多