macos - "Cannot create asynchronous query while in a write transaction"异常

标签 macos swift3 realm

将我的 OS X 应用程序从 swift 2.2 迁移到 swift 3.0( Realm 版本也从 1.0.2 更改为 2.1.1)后,一些写入事务开始抛出异常:“在写入事务中无法创建异步查询”。但是在迁移之前它运行良好。

let realm = try Realm()
let allMessages = realm.objects(Message.self)
let messages = allMessages.filter("(state == 1) AND (dateSent <= %@)",  dateSent)
try realm.write ({
   messages.forEach { message in message.state = .seen }
})

在事务开始时,它抛出异常。为什么会发生这种情况,我该如何解决?

最佳答案

在我的代码中遇到了同样的问题,结果发现开始写入事务触发了一个集合通知,该通知又创建了一个新的 RLMResults 并向其添加了一个通知块,这意味着我正在调用 addNotificationBlock在写事务内部并崩溃。

如果可以重现,请在results.cpp - void Results::prepare_async() 中放置一个断点抛出异常的地方,看看你的代码试图做什么。

关于macos - "Cannot create asynchronous query while in a write transaction"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41613494/

相关文章:

objective-c - NSURL 返回文件的 id 而不是文件的路径

ios - 使用带有 swift 的图表库的饼图

json - 在 Swift 4 中合并一个 Realm 和 Codable 类

ios - 在后台加载数据并重新加载tableView

macos - QLPreviewView 无法在沙盒中显示快速预览

ruby - 通过 macports 安装了 fxruby,现在 ruby​​gems 坏了

python - Ubuntu/MacOS 看不到 RPLidar

swift3 - Swift 的属性 overservers 不会被级联调用

ios - 如何在swift中设置数字上方的第一个,第二个和第三个字母

ios - Swift 4 Codable Realm 对象子类