Удалить основной объект данных с помощью 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 или!

Вы должны проверить, верно ли это в вашем случае.

Другие вопросы по тегам