注销时,我正在致电
let realm = try! Realm()
try! realm.write {
realm.deleteAll()
}
在主线程上,这没有问题。但是,我正在进行一些网络操作,并且在后台线程上进行的写入称为注销后。我现在得到
RLMException
Adding a deleted or invalidated object to a Realm is not permitted
因为它正在尝试更新已删除的对象。解决此问题的正确方法是什么?我是否需要在每次写入之前使用object.isValid()
检查每个对象以解决注销问题,还是有更好的方法?
答案 0 :(得分:0)
这当然可能不适合您的情况,但是我建议避免此类问题的最佳方法是更改应用程序的流程,以便:-
如果要完全删除数据库,那么取消所有任务可能与等待完成一样有效。
如果您无法取消它们,那么也许检查用户是否仍在网络任务完成时登录会有所帮助。
无论哪种方式,我建议您确保遵循“完成任务然后注销”的顺序。