我创建了名为MyHelper.swift的文件 我在里面创建了一个类:
public class MyHelper{
//..... variables here
public init(list listOfViews: [UIView]){
self.listOfViews = listOfViews
self.time = 1.0;
}
}
然后我在UIViewController中声明了一个像这样的对象
class ViewController: UIViewController {
var myHelper: MyHelper;
override func viewDidAppear(animated: Bool) {
myHelper = MyHelper(listOfViewsToAnimatin: listOfViews)
}
// ..... rest of the code
}
但我收到的错误是:
**
类“ViewController”没有初始值设定项。
**
我尝试了xcode中建议的默认修复:
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
它引起了另一个错误。
然后我尝试了来自互联网的代码:
required init(coder aDecoder: NSCoder!)
{
super.init(coder: aDecoder)
}
它说:
属性self.myHelper未在super.init调用中初始化
我怎么能在UIViewController中使用MyHelper类的对象!
答案 0 :(得分:2)
这是Swift编译时的工作时间。
您需要在MyHelper
方法中设置init
,或将其标记为可选(请注意var
声明末尾的问号):
class ViewController: UIViewController {
var myHelper: MyHelper?
required init(coder aDecoder: NSCoder!)
{
super.init(coder: aDecoder)
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
myHelper = MyHelper(listOfViewsToAnimatin: listOfViews)
}
// ..... rest of the code
}
答案 1 :(得分:1)
您正在viewDidAppear中初始化MyHelper。它需要在init中初始化(在super.init()之前),或者你需要将它声明为optional并设置为nil。
var myHelper: MyHelper? = nil
答案 2 :(得分:1)
您可以选择myHelper
:
var myHelper:MyHelper?
使用时,首先用以下内容打开它:
if let myHelper = myHelper {
myHelper.yourFunction()
} else {
// self.myHelper == nil
}
或者,您可以使用!
打开包装:
myHelper!.yourFunction()
但如果myHelper为零,它会崩溃。