Я удаляю объект Realm и получаю эту ошибку:
Завершение приложения из-за неперехваченного исключения «RLMException», причина: «Может только добавлять, удалять или создавать объекты в Realm в транзакции записи - сначала вызовите beginWriteTransaction для экземпляра RLMRealm».
Я пробовал обновить ()
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», причина: «Можно только добавлять, удалять или создавать объекты в области в транзакции записи - сначала вызовите beginWriteTransaction для экземпляра RLMRealm.»
Я думаю, что проблема не в моей функции удаления объекта области, а в том, что существует несоответствие между объектами области и табличным представлением, пытающимся получить доступ к удаленным объектам.
// 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)
})