【问题标题】:Realm - Can I save a object after delete the object?领域 - 删除对象后我可以保存对象吗?
【发布时间】:2015-08-31 10:10:03
【问题描述】:

我想将一个对象添加到收藏夹。 在这种情况下,当用户按下按钮将对象添加到收藏夹时,该对象将被保存到领域。然后他按下一个按钮从收藏夹中删除该对象,它将被删除。然后,他再次按下按钮保存,应该再次保存。 有货吗?

当我按两次保存按钮时,它说

Terminating app due to uncaught exception 'RLMException', reason: 'Object has been deleted or invalidated.'

代码如下。

func delete() {
realm.write({
    self.realm.delete(obj)
})
}
func save() {
    realm.write({
        self.realm.add(obj, update: false)
    })
}

【问题讨论】:

标签: ios swift realm


【解决方案1】:

(免责声明:我为 Realm 工作)

不!就像罐头上说的那样,当一个对象从 Realm 中删除时,您不能简单地使用相同的对象引用再次添加它。

可能有必要重新考虑那里的逻辑。如果用户在删除对象后有机会重新添加对象,最好实际上删除它,直到用户已将应用程序推进到无法返回的地步。

如果做不到这一点,您始终可以将信息保存在对象中,并在用户再次按下按钮时创建一个新对象。

【讨论】:

  • >如果做不到这一点,您可以随时将信息保存在对象中,并在用户再次按下按钮时简单地创建一个新对象。我怎样才能做到这一点? Realm 允许我们复制对象?
  • 如果您需要快速恢复文件,“坚持”它是有意义的,(即使 UI 报告它已被删除)直到用户真正不再需要它。
  • 不,我的意思是您必须掌握信息才能从头开始重新创建该对象。显然这样比较麻烦和费力,这就是为什么我推荐上面的“暂时删除”选项。
  • 我明白了。暂定解决方案可用于删除消息、帐户和线程。但我认为这种方式不适合收藏夹。您如何看待 Realm 的设计?
  • 嗯好吧!我认为 Realm 在这种情况下的行为是按预期工作的。一旦你在一个对象上调用了 delete,并且 Realm 已经将它从它的存储中完全驱逐,那么在你可能想要选择性地“撤消”这个操作的地方拥有额外的功能是没有意义的。我绝对认为这里有一个解决方案,在绝对必要之前不涉及从 Realm 中显式删除对象。
猜你喜欢
  • 1970-01-01
  • 2022-01-21
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
相关资源
最近更新 更多