使用 Swift 删除核心数据管理对象 3

delete core data managed object with Swift 3

Swift 3 迁移了我的代码并更改:

 context.deleteObject(myManagedObject)

 context.delete(myManagedObject)

编译正常(XCode 8b3)但在运行时抱怨上下文没有 function/selector delete(managedObject)

这是运行时错误:

[NSManagedObjectContext delete:]: 无法识别的选择器发送到实例

我的代码很基础:

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

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

为什么它不再有效?

谢谢

格雷格

来自 Xcode 8 beta 3 - Release Notes

Xcode 8 beta 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)

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

您需要检查这是否适用于您的情况。