Как удалить tableview index.row из ядра данных swift 4 - PullRequest
0 голосов
/ 31 октября 2018

Я создал объект, который называется Медикаменты, и функция добавления новых данных:

@objc func saveUserSettings() {

    SVProgressHUD.show()

    let name = medicationNameTextField.text
    let dosage = dosageTextField.text
    let frequency = medicationNameTextField.text
    let reminder = dosageTextField.text

    let medication = Medications(context: PersistenceService.context)
    medication.name = name
    medication.dosage = dosage
    medication.frequency = frequency
    medication.reminder = reminder

    PersistenceService.saveContext()
    self.meds.append(medication)

}

Как удалить один из этих индексов при нажатии кнопки удаления в ячейке табличного представления?

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {

    if editingStyle == .delete {

        meds.remove(at: indexPath.row)

        let task = meds[indexPath.row]

        PersistenceService.saveContext()

        self.tableView.reloadData()
    }        

}

Есть идеи?

1 Ответ

0 голосов
/ 31 октября 2018

Удаление из массива здесь

meds.remove(at: indexPath.row)

не удаляет его автоматически из coreData, вам нужно использовать

context.delete(object)

перед сохранением контекста, смотрите здесь Swift 3 Core Data Delete Object

Также сделайте это в правильном порядке

let task = meds[indexPath.row]

context.delete(task) // access context anywhere but this statement should run

PersistenceService.saveContext()

meds.remove(at: indexPath.row)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...