我是Swift的新手。我继承了一个项目。我看到它在设备上运行。但是,当我签出代码时,它有很多错误。我能够清除错误。但是,我遇到了令我困惑的这一个。该项目也使用xib文件。这是代码。
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override init(frame: CGRect) {
super.init(frame: frame)
}
init(items:NSArray, viewController:AnyObject){
super.init()
//itemsArray = items
itemsArray = items as [AnyObject]
//commonInit(viewController as UIViewController)
commonInit(viewController as! UIViewController)
}
我在init(items:NSArray,viewController:AnyObject)方法/函数下得到错误。错误指向" super.init()"。它声明"必须调用超类的指定初始化程序' UIView'错误"
我一直在搜索,谷歌搜索,问别人,什么都没有出现。 我可以获得有关修复此错误的帮助,或者至少为什么会出现此错误?我想了解所以我可以成为一个更好的软件开发人员。
编辑:我要感谢大家的见解和帮助。我发现问题更大了。我做了super.init(frame:CGRect)中建议的更改。我不得不更改一个影响init函数的数组属性。
答案 0 :(得分:11)
正如错误消息所示,您只能调用超类的指定初始值设定项。
要解决此问题,您需要致电:super.init(frame: frame)
而不是super.init()
答案 1 :(得分:5)
UIView
指定的初始值设定项为:
init(frame: CGRect)
init(coder aDecoder: NSCoder)
您正在调用super.init()
,这是从其超类NSObject
继承的初始值设定项。正如编译器建议的那样,使用其中一个初始化程序。