Удалить основной объект данных с помощью Swift 3
Swift 3 перенес мой код и изменил:
context.deleteObject(myManagedObject)
в
context.delete(myManagedObject)
это нормально компилируется (XCode 8b3), но во время выполнения жалуется, что в контексте отсутствует удаление функции / селектора (managedObject)
Вот ошибка времени выполнения:
[NSManagedObjectContext delete:]: нераспознанный селектор отправлен на экземпляр
Мой код очень прост:
func delete()
{
let appDel: AppDelegate = UIApplication.shared().delegate as! AppDelegate
if let context: NSManagedObjectContext = appDel.managedObjectContext
{
context.delete(exerciseData)
appDel.saveContext()
}
}
Почему он больше не работает?
Спасибо
Greg
1 ответ
От Xcode 8 beta 3 - Примечания к выпуску
Известные проблемы в Xcode 8 beta 3 - компилятор Swift
Попытка использовать NSManagedObjectContext метод delete (:) может привести к вызову добавленного UIKit метода delete (:) для NSObject вместо (часть категории UIResponderStandardEditActions), если аргумент является необязательным (включая ImplicitlyUnwrappedOptional). (27206368)
Обходной путь: вручную разверните необязательное значение, используя if или!
Вы должны проверить, верно ли это в вашем случае.