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()
}
}
为什么它不再有效?
由于
格雷格
答案 0 :(得分:2)
来自Xcode 8 beta 3 - Release Notes
Xcode 8 beta 3中的已知问题 - Swift编译器
如果参数是可选的(包括ImplicitlyUnwrappedOptional),尝试使用NSManagedObjectContext的delete( :)方法可能会导致在NSObject上调用UIKit添加的删除( :)方法(UIResponderStandardEditActions类别的一部分) )。 (27206368)
解决方法:使用if或!手动解包可选值。
你需要检查一下你的情况是否成立。