我正在检测诸如“Realm 已在写入事务中”之类的错误。我的应用程序使用:
[[RLMRealm defaultRealm] beginWriteTransaction];
[[RLMRealm defaultRealm] addOrUpdateObject:user];
[[RLMRealm defaultRealm] commitWriteTransaction];
我在我的应用程序的不同位置对不同的对象使用这种方法。那么,防止这些错误的最佳方法是什么?是否可以异步控制多个写操作?
最佳答案
正如您所发现的,Realm 不允许嵌套写入事务(您不能在提交或取消前一个事务之前启动新事务)。
避免这个问题主要是架构设计问题。除了添加、删除或修改 Realm 中的对象之外,写事务不应该执行任何操作。您可能想要使用 EpicPandaForce 在评论中提到的 transactionWithBlock:
方法,和/或创建辅助方法,其唯一职责是启动、执行和完成写入事务。
如果您确实需要能够检查一个 Realm 是否已经在写入事务中,您可以使用 inWriteTransaction
属性。但是,如果您需要使用此属性,那么在几乎所有情况下,您构建应用程序的方式都是有缺陷的,您应该回过头来重新考虑为什么您的写入事务如此复杂。
关于ios - 如何同时写入Realm的不同对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46707793/