使用Swift 3

时间:2016-07-21 14:18:59

标签: core-data nsmanagedobject nsmanagedobjectcontext swift3 ios10

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()
    }
}

为什么它不再有效?

由于

格雷格

1 个答案:

答案 0 :(得分:2)

来自Xcode 8 beta 3 - Release Notes

Xcode 8 beta 3中的已知问题 - Swift编译器

  

如果参数是可选的(包括ImplicitlyUnwrappedOptional),尝试使用NSManagedObjectContext的delete( :)方法可能会导致在NSObject上调用UIKit添加的删除( :)方法(UIResponderStandardEditActions类别的一部分) )。 (27206368)

解决方法:使用if或!手动解包可选值。

你需要检查一下你的情况是否成立。