Ios 正确处理领域对象删除

Ios 正确处理领域对象删除,ios,swift,database,realm,Ios,Swift,Database,Realm,我在一个领域数据库中有一个Roof对象,我用它在屏幕上显示一些数据。用户注销后,我删除Roof对象,然后更新屏幕。在此更新方法中,应用程序崩溃,并显示消息:“对象已被删除或无效。” 对象是否应该失效,或者不应该这样做?如果屋顶无效,我应该只检查更新方法,还是有更好的方法来处理不存在的对象 以下是我使用的基本代码: class Roof: Object { dynamic var info: String? } let roof = Roof() let realm = try! Real

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

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

以下是我使用的基本代码:

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)
}

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

当您从域中删除对象时,它的所有实例都将无效,您将无法再使用它。您可以使用属性检查对象是否已失效。

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