在我的顶部UITableViewController
如下:
let queue = DispatchQueue(label: "background")
删除任务时,将执行以下操作:
self.queue.async {
autoreleasepool {
let realm = try! Realm()
realm.beginWrite()
realm.delete(task)
do {
try realm.commitWrite()
} catch let error {
self.presentError()
}
}
}
然后我收到错误
以未捕获的类型异常终止
Realm::In CorrectThreadException:从不正确的线程访问领域。
我该如何解决这个问题?
看起来写入发生在与最初访问对象的线程不同的线程上。你应该能够通过通过修复它task
的 id 并在执行写入之前(在异步块内)使用它从数据库中获取它。
所以在顶部:
var taskId = 0 // Set this accordingly
然后类似的东西
self.queue.async {
autoreleasepool {
let realm = try! Realm()
let tempTask = // get task from Realm based on taskId
realm.beginWrite()
realm.delete(tempTask)
do {
try realm.commitWrite()
} catch let error {
self.presentError()
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)