[英]iOS (Swift): Protocol for UIViewController that adds a new object
[英]error when declaring a new object in a UIViewController in swift
我创建了一个名为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)
}
它说 :
在super.init调用中未初始化属性self.myHelper
我到底如何在UIViewController中使用MyHelper类的对象!
这是Swift在工作中的编译时间检查。
您需要在init
方法中设置MyHelper
,或将其标记为可选(请注意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
}
您正在viewDidAppear中初始化MyHelper。 它需要在init中进行初始化(在super.init()之前),或者您需要将其声明为可选并设置为nil。
var myHelper: MyHelper? = nil
您可以将myHelper
可选:
var myHelper:MyHelper?
使用时,请先用以下方法解开包装:
if let myHelper = myHelper {
myHelper.yourFunction()
} else {
// self.myHelper == nil
}
或者,您可以使用!
:
myHelper!.yourFunction()
但是如果myHelper为零,它将崩溃。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.