覆盖函数prepareForDeletion
在swift 1.2中失败
// Playground - noun: a place where people can play
import UIKit
import CoreData
extension NSManagedObject {
@objc func prepareForDeletion() {
println("deleting object")
}
}
错误:使用Objective-C选择器的方法'prepareForDeletion()' 'prepareForDeletion'与之前的声明冲突相同 Objective-C选择器
@objc func prepareForDeletion() {
^
CoreData.NSManagedObject:31:14:注意:之前的'prepareForDeletion' 在这里宣布
@objc func prepareForDeletion()
有没有人有想法?
感谢 罗恩
答案 0 :(得分:1)
你不能覆盖同一类扩展中的类中的方法,这样做总是未定义的行为。
对于在Swift中重写Objective-C方法,这一点未被注意到 Xcode 6.2现在已在Xcode 6.3 beta中正确诊断。
请注意Objective-C中的相应练习 - 覆盖同一类的Objective-C扩展中的方法 - 也是不允许的,请参阅 "Avoid Category Method Name Clashes":
如果类别中声明的方法的名称与方法相同 在原始类中,或在另一个类别中的方法相同 class(甚至是超类),行为未定义为哪个 方法实现在运行时使用。这不太可能是一个 如果您使用自己的类别的类别,但可能导致问题 使用类别将方法添加到标准Cocoa或。时的问题 Cocoa Touch课程。
您可以做的是覆盖自定义中的方法
NSManagedObject
子类。