Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在swift中的UIViewController中声明新对象时出错_Ios_Swift_Uiviewcontroller - Fatal编程技术网

Ios 在swift中的UIViewController中声明新对象时出错

Ios 在swift中的UIViewController中声明新对象时出错,ios,swift,uiviewcontroller,Ios,Swift,Uiviewcontroller,我已经创建了一个名为MyHelper.swift的文件 我在里面创建了一个类: public class MyHelper{ //..... variables here public init(list listOfViews: [UIView]){ self.listOfViews = listOfViews self.time = 1.0; } } 然后我在UIViewController中声明了一个对象,如下所示 class V

我已经创建了一个名为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类的对象

您正在初始化ViewDidDisplay中的MyHelper。它需要在init中初始化(在super.init()之前),或者您需要将其声明为可选并设置为nil

var myHelper: MyHelper? = nil

您正在初始化ViewDidDisplay中的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为零,它将崩溃。

您可以将
myHelper
设置为可选:

var myHelper:myHelper?

使用时,请先使用以下工具将其展开:

if let myHelper = myHelper {
    myHelper.yourFunction()
} else {
    // self.myHelper == nil
}
或者,您可以使用
展开

myHelper!。yourFunction()


但如果myHelper为零,它将崩溃。

这是Swift在工作时的编译时检查

您需要在
init
方法中设置
MyHelper
,或者将其标记为可选(请注意
var
声明末尾的问号):


这是Swift的编译时检查

您需要在
init
方法中设置
MyHelper
,或者将其标记为可选(请注意
var
声明末尾的问号):


现在,当我尝试调用一个函数时,它会给我另一个错误:“MyHelper?”?没有名为startMyHelperTimer“”的成员,该成员是MyHelper中的函数。是否引用了
MyHelper
的实例?i、 e.确保您正在使用
self.myHelper。startMyHelperTimer
我添加了这一行,它可以立即查找:var myHelper:myHelper!而不是我放了!而且很有效!!!!!!我试着引用这个实例,现在成功了。谢谢@GavinBunneynow当我尝试调用一个函数时,它给了我另一个错误:“MyHelper?”?没有名为startMyHelperTimer“”的成员,该成员是MyHelper中的函数。是否引用了
MyHelper
的实例?i、 e.确保您正在使用
self.myHelper。startMyHelperTimer
我添加了这一行,它可以立即查找:var myHelper:myHelper!而不是我放了!而且很有效!!!!!!我试着引用这个实例,现在成功了。谢谢@GavinBunneynow当我尝试调用一个函数时,它给了我另一个错误:“MyHelper?”?没有名为startMyHelperTimer“”的成员,该成员是MyHelpernow中的函数。当我尝试调用函数时,它会给我另一个错误:“MyHelper?”?没有名为startMyHelperTimer“”的成员,该成员是MyHelpernow中的函数。当我尝试调用函数时,它会给我另一个错误:“MyHelper?”?没有名为startMyHelperTimer“”的成员,该成员是MyHelpernow中的函数。当我尝试调用函数时,它会给我另一个错误:“MyHelper?”?没有名为startMyHelperTimer“”的成员,该成员是MyHelper中的函数