使用 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 删除核心数据托管对象的主要内容,如果未能解决你的问题,请参考以下文章