通过这个appcoder教程building a text to speech app tutorial工作并遇到一个快速的1.2-> swift 2.0功能。
演示项目中有一个类... IOS 10.11.1下的Xcode 7.1.1不喜欢,给我错误。 “initialiser不会在覆盖init()语句上覆盖其超类的指定初始化程序”,后跟错误“必须调用超类UISlider的指定初始化程序”。
好的,对Swift来说相当新鲜;而且我开始修复这个问题对我来说有点迷失。
class CustomSlider: UISlider {
var sliderIdentifier: Int!
override init() { <--- error here
super.init() <--- error here
sliderIdentifier = 0
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
sliderIdentifier = 0
}
}
此代码段应该说什么?
答案 0 :(得分:4)
由于m1
没有将UISlider
定义或继承为指定的初始值设定项,因此您无法从子类init()
调用它。
init
在这种情况下,您可以将class CustomSlider: UISlider {
var sliderIdentifier: Int!
required init() {
super.init(frame: CGRect.zero)
sliderIdentifier = 0
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
sliderIdentifier = 0
}
}
的初始化分解出去并继承所有sliderIdentifier
的初始值设定项:
UISlider
有关详细信息,请参阅The Swift Programming Language中标题为“指定初始值设定项和便捷性初始化程序”的部分。