ios - 如何同时写入Realm的不同对象?

标签 ios objective-c database realm

我正在检测诸如“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/

相关文章:

php - 如何在不在查询中定义的情况下获取所有表列?

ios - 图像在 iphone 4 中未全屏显示

ios - 将 NSCalendar.weekdaySymbols 索引转换为 NSDateComponents.weekday

ios - iOS如何检测个人wifi热点或录音是否在进行?

iphone - 你能在 iPhone 应用程序中广泛使用 UIButton 应用程序吗?

mysql - 如何从 wordpress 页面中的以下查询中获取结果?

objective-c - Objective C - 无法在一种方法中设置值并从另一种方法访问它

ios - 收到 SUbiquity Identity DidChangeNotification 后我应该做什么?

objective-c - 显示无窗口 (LSUIElement) 应用程序的首选项

c# - 为标签系统设计数据库的最有效方法