Чтобы иметь возможность удалить объект, вы должны использовать NSManagedObject
в качестве источника данных
var itemsArray = [Items]()
loadItems
может быть уменьшено до
func loadItems() throws {
let request = NSFetchRequest<Items>(entityName: "Items")
request.returnsObjectsAsFaults = false
itemsArray = try context.fetch(request)
}
Поместите блок do - catch
вокруг вызова loadItems()
и напечатайте экземпляр error
, а не бессмысленную буквенную строку.
В cellForRow
использовать
let item = itemArray[indexPath.row]
let product = item.product
Чтобы удалить элемент, вы должны удалить его из источника данных, затем удалить элемент в контексте и затем сохранить контекст:
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
let objectToDelete = itemArray[indexPath.row]
itemArray.remove(at: indexPath.row)
context.delete(objectToDelete)
// here add code to save the context
self.tableView.deleteRows(at: [indexPath], with: .fade) // and you have to update the table view
}
}