Ios 解析对象时删除领域数据库
我正在开发一个使用领域作为数据库的应用程序。用户可以随时注销,这将删除域中的所有对象 但由于我的应用程序使用网络,我可能同时在解析对象,结果崩溃了Ios 解析对象时删除领域数据库,ios,realm,Ios,Realm,我正在开发一个使用领域作为数据库的应用程序。用户可以随时注销,这将删除域中的所有对象 但由于我的应用程序使用网络,我可能同时在解析对象,结果崩溃了 *** Terminating app due to uncaught exception 'RLMException', reason: 'Object has been deleted or invalidated.' 这是我的注销功能: - (void)logout { RLMRealm *realm = [RLMRealm defa
*** Terminating app due to uncaught exception 'RLMException', reason: 'Object has been deleted or invalidated.'
这是我的注销功能:
- (void)logout {
RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
[realm deleteAllObjects];
[realm commitWriteTransaction];
[self showLoginScreen];
}
正确的处理方法是什么?我想删除注销时存储的所有数据。您可以通过属性
invalidated
检查对象是否仍然存在。作为锁定机制,您可以使用写事务本身,因为它们与领域是独占的。您在一个时间点上只输入一个写事务。我没有使用Realm,但只要想一想,您就可以删除后台线程中的所有对象,并在解析代码和对象删除代码周围放置@synchronized
块(当然,在同一个互斥体上同步)。或者,您可以复制从Realm获得的对象,这样您就不会解析“活动”副本,尽管我不知道Realm是否支持这一点。最后,您可以尝试检查是否删除了每个对象,尽管这听起来有点骇人听闻。