繁体   English   中英

迅速在UIViewController中声明新对象时发生错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM