Ios 如何在同一时间编写不同的领域对象?
我正在检测诸如“领域已在写入事务中”之类的错误。我的应用程序使用:Ios 如何在同一时间编写不同的领域对象?,ios,objective-c,database,realm,Ios,Objective C,Database,Realm,我正在检测诸如“领域已在写入事务中”之类的错误。我的应用程序使用: [[RLMRealm defaultRealm] beginWriteTransaction]; [[RLMRealm defaultRealm] addOrUpdateObject:user]; [[RLMRealm defaultRealm] commitWriteTransaction]; 我对应用程序不同位置的不同对象使用此方法。那么,防止这些错误的最佳方法是什么?是否可以异步控制多个写入操作?
[[RLMRealm defaultRealm] beginWriteTransaction];
[[RLMRealm defaultRealm] addOrUpdateObject:user];
[[RLMRealm defaultRealm] commitWriteTransaction];
我对应用程序不同位置的不同对象使用此方法。那么,防止这些错误的最佳方法是什么?是否可以异步控制多个写入操作?正如您所发现的,Realm不允许嵌套写入事务(在提交或取消前一个事务之前,您不能启动新事务) 避免这个问题主要是一个架构设计问题。写事务不应该做任何事情,除了添加、删除或修改域中的对象。您可能希望使用EpicPandaForce在注释中提到的
transactionWithBlock:
方法,和/或创建助手方法,其唯一职责是启动、执行和完成写事务
如果您确实需要能够检查某个领域是否已在写入事务中,则可以使用
inWriteTransaction
属性。但是,如果您需要使用此属性,那么在几乎所有情况下,您构建应用程序的方式都是有缺陷的,您应该回去重新考虑为什么您的写事务如此复杂。您是否尝试过使用[realm transactionWithBlock:^{[realm addor updateobject:user];}]代码>而不是?