Ошибка очень очевидна:
context.delete(...
ожидает экземпляр NSManagedObject
, но вы передаете целое число (кстати, indexPath[1]
- довольно жуткий, но правильный способ получить item
/row
значение).
Предполагается, что у вас есть массив источника данных soundBoardData
. Обычный способ удаления объектов Core Data в представлении коллекции или таблицы:
extension soundboardVC: SoundboardCellDelegate {
func delete(cell: soundboardCellVC) {
if let indexPath = collectionView?.indexPath(for: cell) {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let itemToDelete = soundBoardData[indexPath.item]
soundBoardData.remove(at: indexPath.item)
context.delete(itemToDelete)
collectionView!.deleteItems(at: indexPath)
appDelegate.saveContext()
}
}
}
Не выполнять повторное получениеданные, удалите элемент в массиве источника данных, затем удалите элемент в контексте управляемого объекта, удалите строку из представления коллекции (с анимацией) и сохраните контекст.