使用 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 或 ! 手动解包可选值。
您需要检查这是否适用于您的情况。
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 或 ! 手动解包可选值。
您需要检查这是否适用于您的情况。