Can only delete an object from the Realm it belongs to

realm, swift, uitableview

Solution

You are trying to delete copies of your Realm objects stored in a collection instead of your actual Realm objects stored in Realm.

try! realm.write {
    realm.delete(Realm.objects(ChecklistDataModel.self).filter("name=%@",checklists[indexPath.row].name))
}

Without the definition of CheklistDataModel, I am not sure if I got the NSPredicate right, but you should be able to figure it out from here.

Problem

Im getting this error "Can only delete an object from the Realm it belongs to" every time I try to delete an object from realm on my tableview. Here is the relevant code: ``` let realm = try! Realm() var checklists = [ChecklistDataModel]() override func viewWillAppear(_ animated: Bool) { checklists = [] let getChecklists = realm.objects(ChecklistDataModel.self) for item in getChecklists{ let newChecklist = ChecklistDataModel() newChecklist.name = item.name newChecklist.note = item.note checklists.append(newChecklist) } tableView.reloadData() } override func numberOfSections(in tableView: UITableView) -> Int { return 1 } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return checklists.count } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "ChecklistCell", for: indexPath) as! ListsTableViewCell cell.name.text = checklists[indexPath.row].name return cell } override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { if editingStyle == .delete { // Delete the row from the data source try! realm.write { realm.delete(checklists[indexPath.row]) } //delete locally checklists.remove(at: indexPath.row) self.tableView.deleteRows(at: [indexPath], with: .fade) } } ``` I know it is this part to be specific: ``` // Delete the row from the data source try! realm.write { realm.delete(checklists[indexPath.row]) } ``` Any ideas of what is going on? Thanks in advance!

Original source