【发布时间】:2022-01-17 15:09:55
【问题描述】:
运行下面的代码我得到“从不正确的线程访问的领域”。第二个try! realm.write({ 行出错,第一个写入行不会导致错误。关于如何修复它的任何想法?
let realm = try! await Realm()
print("User Realm User file location: \(realm.configuration.fileURL!.path)")
try! realm.write { // <= No error here
realm.add(groups, update: .modified)
}
StartApp._Groups = groups
if let items = await api.getArticles(aricleIDs: ids) {
try! realm.write({ // <= Error here
realm.add(items, update: .modified)
})
StartApp._Items = items
var index = 0
StartApp._Items = StartApp.Items.map { item in
item.i = index
index = index + 1
return item
}
groups.forEach { group in
group.items = items.filter({ $0.groupId == group.id })
}
}
【问题讨论】:
-
试试? realm.write({ realm.add(items, update: .modified) }) 试试这样
-
你为什么要这样做
await Realm()?通常等待是为了查询或读取能够异步处理数据,请参阅Async/Await Query MongoDB。它确实取代了function.async方法调用。哦,这个await api.getArticles之后的闭包是一个不同的线程——记住是异步的并且是独立运行的。 -
@Jay 我正在使用的版本中默认构造函数使用await
-
@Jay 第二次关闭你的意思是第二次
realm.write? -
我改成这个:
let realm = try! Realm(queue: .main)然后我得到一个 NSError
标签: swift async-await realm