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

Posted

技术标签:

【中文标题】使用 Swift 3 删除核心数据托管对象【英文标题】:delete core data managed object with Swift 3 【发布时间】:2016-07-21 14:18:59 【问题描述】:

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

为什么它不再工作了?

谢谢

格雷格

【问题讨论】:

【参考方案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!,而不是上下文...

以上是关于使用 Swift 3 删除核心数据托管对象的主要内容,如果未能解决你的问题,请参考以下文章

删除核心数据对象时,如何在 Swift 5 中同时删除其所有相关对象?

核心数据错误:文件仍未删除

SWIFT 的核心数据:如何从关系实体中删除对象?

从核心数据模型 Swift 3 中删除一行

如何在 Swift 2.0 中滑动删除核心数据表视图

如何从核心数据swift中删除项目3