【问题标题】:delete core data managed object with Swift 3使用 Swift 3 删除核心数据托管对象
【发布时间】:2023-04-02 12:30:01
【问题描述】:

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

 context.deleteObject(myManagedObject)

 context.delete(myManagedObject)

这编译得很好(XCode 8b3),但在运行时抱怨上下文没有函数/选择器 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()
    }
}

为什么它不再工作了?

谢谢

格雷格

【问题讨论】:

    标签: core-data nsmanagedobject nsmanagedobjectcontext swift3 ios10


    【解决方案1】:

    来自 Xcode 8 beta 3 - Release Notes

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

    如果参数是可选的(包括 ImplicitlyUnwrappedOptional )。 (27206368)

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

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

    【讨论】:

    • 很好……executiveData 是一个可选类型Exercise!我阅读了发行说明,但错过了这一点。谢谢。为了修复我解开的练习数据: if let exerciseToBeDeleted: Exercise = exerciseData { //delete code }
    • 一个澄清:我有一个情况,我可以选择引用NSManagedObjectContext 实例和NSManagedObject 实例。我需要在 NSManagedObject 上使用 if let!,而不是上下文...
    猜你喜欢
    • 2016-10-27
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 2013-08-14
    相关资源
    最近更新 更多