Swift Realm delete Object error- write transaction



我正在删除一个 Realm 对象,但收到此错误:

由于未捕获的异常"RLMException"而终止应用程序,原因:"只能在写入事务中添加、删除或创建 Realm 中的对象 - 首先在 RLMRealm 实例上调用 beginWriteTransaction。

我试过刷新()

extension Realm {
func addWord(_ word: RelatedWord) {
do {
try self.write {
self.add(word)
}
} catch let error {
print(error.localizedDescription)
}
}
func deleteWord(_ word: RelatedWord) {
BG {
do {
self.beginWrite()
self.delete(word)
try self.commitWrite()
//self.refresh()
} catch let error {
print(error.localizedDescription)
}
self.refresh()
}
}
}
VC:
realm.delete(word)

预期成果: 轻扫以从表视图中删除对象

错误:对象删除未正确执行。

由于未捕获的异常"RLMException"而终止应用程序,原因:"只能在写入事务中添加、删除或创建 Realm 中的对象 - 首先在 RLMRealm 实例上调用 beginWriteTransaction。

我认为问题不在于我删除 realm 对象的函数,而在于 Realm 对象和尝试访问已删除对象的表视图之间存在不一致。

// Swipe to delete cell and word
func tableView(_ tableView: UITableView,trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let action = UIContextualAction(style: .normal, title: "Delete", handler: { (action, view, completionHandler) in
// Update data source when user taps action
let letters = DataSingleton.shared.relatedArr.keys.sorted()
if let data = DataSingleton.shared.relatedArr[letters[indexPath.section]]?.sorted(by: {$0.word < $1.word}) {
let word = data[indexPath.row]
print(word.word)
self.realm.delete(word)

tableView.beginUpdates()
tableView.deleteRows(at: [indexPath], with: .fade)
tableView.reloadRows(at: [indexPath], with: .automatic)
tableView.endUpdates()
}
completionHandler(true)
})

我不确定 BG 是什么,但我会这样做:

func deleteWord(_ word: RelatedWord) {
do {
try self.write {
self.delete(word)
} 
} catch let error {
print(error.localizedDescription)
}
self.refresh()
}

最新更新