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