初始化程序不会从其超类错误中重写设计的初始化程序

初始化程序不会从其超类错误中重写设计的初始化程序

问题描述:

当我打开已在Xcode 6.3.2上具有快速类的项目时,它显示错误。我希望你能帮助我解决这个问题。谢谢。初始化程序不会从其超类错误中重写设计的初始化程序

enter image description here

enter image description here

+0

您可能试图使用与当前swift语法不兼容的编译器。确保你的swift代码是最新的。 – boidkan

你已经来到这里了几个不同的错误;我们一次处理一个。

从苹果重写便利初始化
每雨燕文档:

如果你写一个匹配的超便利的初始化,即超便利的初始化绝不可以直接通过您的子类称为子类初始化,按照上述初始化程序委托类类型中的规则。因此,你的子类不是(严格地说)提供超类初始化器的重写。因此,在提供超类方便初始值设定项的匹配实现时,不要编写超驰修饰符。

因此沟渠override关键字,你应该设置。说到套...

在斯威夫特触摸方式升级接口1.2
iphonedev.tv的Paul Solt涵盖这Swift 1.2 fixes and breaks a few things: you should be excited!,我建议你读了整个帖子(更不用说释放指出,他链接到) ,但缺点是NSSet已被本机Set类型所取代。正如他所说:

修复:你需要更新你的方法的签名(即:整个第一线)以下:

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 

他还指出,没有一个anyObject ()方法,所以你将不得不通过提供的接口来解决这个问题。

希望有帮助!

斯威夫特

你并不需要在convenience初始化的的override关键字,因为你不能覆盖这样的初始化。

修复:删除override关键字。

convenience init() { 
    self.init(frame: CGRectZero) 
} 

此外,无论是init()一个指定初始化(在STBTableViewIndex)或不是。如果是,请将convenience override init()替换为required init(),这意味着首先需要override