1
我想了解我在這裏做錯了什麼。刪除Realm中的對象並保持tableview同步
有兩個基本的viewController:一個tableView和一個detailView。
我訂閱通知重新加載tableView如果數據被修改。我可以修改detailViewController中的記錄,並且更改會得到反映。即使從tableView中刪除一條記錄,它也可以工作。
但我也想在detailView上添加一個刪除按鈕,但是然後viewController和Realm不同步並崩潰。 'RLMException',原因:'對象已被刪除或失效。'。下次我加載應用程序的記錄被刪除,所以它的作品。
如何刪除不同viewController中的對象並保持更新的tablieView控制器?
class TableViewController: UITableViewController {
var token:NotificationToken?
var expenses: Results<Expense> {
get {
let realm = try! Realm()
return realm.objects(Expense.self)
}
override func viewDidLoad() {
super.viewDidLoad()
let realm = try! Realm()
token = realm.addNotificationBlock { [weak self] notification, realm in
DispatchQueue.main.async {
self?.tableView.reloadData()
}
}
}
class DetailViewController {
func deleteButtonTapped() {
let realm = try! Realm()
if let expense = self.expense {
try! realm.write {
realm.delete(expense)
}
// crashes during load
performSegue(withIdentifier: "unwindToExpensesTable", sender: self)
}
}
您是否在'DetailViewController'中保留對'費用'的引用?刪除對象後,請確保清除對它的任何引用。 – jervine10
jervine10,你是男人!它不是正在崩潰的tableViewController,它是detailView,因爲它保留了引用。如果你寫評論作爲答案,我可以給你這個信用。 :-) – jannej