【问题标题】:iOS CoreData entity return as Null after clear the Database清除数据库后,iOS CoreData 实体返回 Null
【发布时间】:2019-01-04 10:56:56
【问题描述】:

当用户注销应用程序时,我需要从核心数据中删除实体,它返回“null”实体

所以我在注销应用程序时遇到了崩溃,是否有任何猜测来处理实体上的 null,

因为我用过下面的案例,但是不行

if(![user isKindOfClass: [NSNull class]]) {
}

删除实体后返回为

<user: 0x1c4293ce0> (entity: <null>; id: 0xd000000000040004 <x-coredata://9E21A585-096A-408F-AF0F-CB027A3E48F0/user/p1> ; data: <fault>)

谁能解释一下为什么会发生

【问题讨论】:

  • 发布您遇到崩溃的代码以及与之相关的错误消息。
  • 我已经更新了确切的崩溃,检查一下
  • 删除对象后,您应该通过将nil 分配给user 并在if 中检查nil 来明确放弃对它的引用。 NSNull 是一个单例对象,可用于将“null”值放入无法保存 nil 引用的对象中(例如 NSArray

标签: ios iphone database core-data applet


【解决方案1】:

您的 user 变量仍然包含对(已删除)NSManagedObject 子类实例的引用。

由于对象已被删除,其entity 显示为“null”,但user 不包含对NSNull 单例的引用。

NSNull 是一个单例对象,可用于将“null”值放入不能保存 nil 引用的对象(例如 NSArray)

删除对象后,应显式设置user = nil,然后在if 中检查nil

if (user != nil) {
    [userComtext performBlock: ^{
        user.latitude = latitude
        user.longitude = longitude
    }];
}

【讨论】:

  • 仍然只得到相同的错误@Paulw11 if (user != nil) { [userContext performBlock: ^{ user.lattitude = latitude; user.longitude = 经度;
  • 删除对象时确定设置user = nil?你能显示那个代码吗?
  • 您应该编辑您的问题以将该代码放入其中,但 user 是否与您在问题的其他代码中引用的变量相同?
猜你喜欢
  • 2017-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-10
  • 1970-01-01
  • 2019-05-15
相关资源
最近更新 更多