Как удалить объект в realm в Swift

#ios #swift #realm

#iOS #swift #realm

Вопрос:

Я проверяю много других ответов, но все еще испытываю проблему с удалением базы данных формы данных realm. Это мой код ошибки :

Завершение работы приложения из-за неперехваченного исключения ‘NSInvalidArgumentException’, причина: ‘-[Rebel.RebelTableViewController удалить:]: нераспознанный селектор, отправленный в экземпляр 0x7fca7b40b5c0

Этот код из моего табличного представления для удаления:

 if editingStyle == UITableViewCellEditingStyle.delete {
    rowHere = indexPath.row
    // it crashes the app when I want to delete from database

    //  delete(self.todos[self.rowHere!])

    self.Rebel.remove(at: indexPath.row)
    tableView.deleteRows(at: [indexPath as IndexPath], with: UITableViewRowAnimation.automatic)
}
  

Комментарии:

1. Никто даже не знает, что такое self. Бунтарь есть.

2. Есть много вопросов по удалению объекта в realm.

Ответ №1:

Сначала получите Object модель в viewDidLoad()

 var DatabaseModel: Results<ObjectClassRealm>!

override func viewDidLoad() {
    super.viewDidLoad()
    let realm = RealmService.shared.realm
    DatabaseModel = realm.objects(ObjectClassRealm.self)
}




func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 
    guard editingStyle == .delete else { return }
    let objectData = DatabaseModel[indexPath.row]
    RealmService.shared.delete(objectData)
}
  

Или вы можете удалить при нажатии кнопки

 @IBAction func DeleteData(_ sender: Any) {
    let realm = try! Realm()
    let deleteData = realm.object(ofType: ObjectClassRealm.self, 
                                  forPrimaryKey: PRIMARYKEY)
    if deleteData == nil {
        print("No data in DB")
    } else {
        RealmService.shared.delete(deleteData!)
    }
}
  

прочитайте документы realm, также вы найдете много решений по тому же вопросу.