【问题标题】:Properly handle Realm object deletion正确处理 Realm 对象删除
【发布时间】:2017-06-28 20:48:07
【问题描述】:

我在 Realm DB 中有一个 Roof 对象,我用它在屏幕上显示一些数据。用户注销后,我删除Roof 对象,然后更新屏幕。在此更新方法中,应用程序崩溃并显示以下消息:“对象已被删除或无效。”

对象应该失效,还是不应该这样做?如果屋顶无效,我应该只检查update 方法,还是有更好的方法来处理不存在的对象?

这是我使用的基本代码:

class Roof: Object {
  dynamic var info: String?
}

let roof = Roof()

let realm = try! Realm()
try! realm.write {
  realm.add(roof)
}
try! realm.write {
  realm.delete(roof)
}

【问题讨论】:

  • 我确实在用户注销时删除了我的所有信息,您应该有其他代码依赖于该值,并且仍在引用它,请确保删除与用户 nil o 相关的所有内容以重新开始.
  • 您是否在删除roof 对象后随时使用它?您是否将其存储在某处的财产中?您的代码示例中不清楚您的视图如何使用roof
  • 是的,我在某些屏幕上使用它作为属性。

标签: ios swift database realm


【解决方案1】:

根据我的理解,这是基本流程:RealmDB -> Container -> View。 当您的容器(可能是一个数组)包含对数据库中对象的引用,但如果之前删除了一个,那么当您更新视图时,它可能需要nothing。因为您的容器比数据库旧。 我的答案是再次查询(更新容器),然后更新您的视图。

【讨论】:

    【解决方案2】:

    当你从 Realm 中删除对象时,它的所有实例都变得无效,你不能再使用它了。您可以使用isInvalidated 属性检查对象是否已失效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 2019-02-13
      相关资源
      最近更新 更多