0

Swift 3 мигрировали мой код и изменен:операции удаления данных управляемый объект с Swift 3

context.deleteObject(myManagedObject) 

в

context.delete(myManagedObject) 

это компилирует нормально (XCode 8b3), но во время выполнения жалуясь, что контекст не имеет функции/селектор удаления (managedObject)

Здесь ошибка во время выполнения:

[NSManagedObjectContext удалить]: непризнанные селектор направлен например

Мой код очень простой:

func delete() 
{ 
    let appDel: AppDelegate = UIApplication.shared().delegate as! AppDelegate 

    if let context: NSManagedObjectContext = appDel.managedObjectContext 
    { 
     context.delete(exerciseData) 
     appDel.saveContext() 
    } 
} 

Почему он больше не работает?

Благодаря

Грег

ответ

2

С бета Xcode 8 3 - Release Notes

Известные проблемы в Xcode 8 бета 3 - Swift Компилятор

Attempting to use NSManagedObjectContext's delete(:) method may result in calling the UIKit-added delete(:) method on NSObject instead (part of the UIResponderStandardEditActions category) if the argument is optional (including ImplicitlyUnwrappedOptional). (27206368)

Обход: вручную разворачивать необязательное значение, используя let или!.

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

+0

Хороший улов .... exerciseData является необязательным типом Упражнение! Я прочитал заметки о выпуске, но пропустил это. Благодарю. Чтобы исправить я развернул exerciseData с: if let exerciseToBeDeleted: Exercise = exerciseData {// delete code} –

+0

Одно уточнение: У меня была ситуация, когда у меня была необязательная ссылка на экземпляр 'NSManagedObjectContext' и экземпляр' NSManagedObject'. Мне нужно было использовать 'if let' или'! 'В *' NSManagedObject' *, а не в контексте ... – andrewcbancroft

 Смежные вопросы

  • Нет связанных вопросов^_^