gpt4 book ai didi

swift - 如何删除所有对象并停止对 Realm 数据库的所有写入?

转载 作者:搜寻专家 更新时间:2023-11-01 05:32:07 25 4
gpt4 key购买 nike

登出时,我正在打电话

let realm = try! Realm()
try! realm.write {
realm.deleteAll()
}

在主线程上,这没有问题。但是,我正在进行一些网络操作,并且在后台线程上写入称为注销后。我现在得到

RLMException
Adding a deleted or invalidated object to a Realm is not permitted

因为它正在尝试更新已删除的对象。解决这个问题的正确方法是什么?我是否需要在每次写入之前使用 object.isValid() 检查每个对象以涵盖注销情况,还是有更好的方法?

最佳答案

这当然可能不适合您的情况,但我建议规避此类问题的最佳方法是改变您的应用程序流程:-

  1. 当用户请求注销时,任何后台网络线程都应该停止,或者您应该等待它们完成。
  2. 一切都完成后,关闭并整理 Realm 数据库。

如果您要完全删除数据库,那么取消所有任务可能与等待完成一样有效。

如果您无法取消它们,那么在网络任务完成时检查用户是否仍处于登录状态可能会有所帮助。

无论哪种方式,我都建议您确保遵循“完成任务然后注销”的顺序。

关于swift - 如何删除所有对象并停止对 Realm 数据库的所有写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56229529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com