2015-03-03 126 views
0

宣布在一个UIViewController一个新的对象时,我已经创建了文件名为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 
} 

,但我得到的错误,说:

**

Class "ViewController" has no initializers.

**

我试图在Xcode建议的默认修正:

required init(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

这导致另一个错误。

那我就从网上这段代码:

required init(coder aDecoder: NSCoder!) 
{ 
    super.init(coder: aDecoder) 
} 

它说:

Property self.myHelper not initialized at super.init call

如何在地球上,我可以使用MyHelper类的对象内部的UIViewController!?

回答

2

这是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 
} 
现在
+0

中的函数现在当我尝试调用一个函数时,它给了我另一个错误:“”MyHelper?没有名为startMyHelperTimer的成员“”,这是MyHelper中的函数 – MBH 2015-03-03 00:51:44

+1

您是否引用MyHelper的实例?即确保你使用'self.myHelper。 startMyHelperTimer' – 2015-03-03 01:02:01

+0

我添加了这一行,它现在可以找到:var myHelper:MyHelper!代替 ?我放 !它的作品!!!!!! – MBH 2015-03-03 01:23:33

1

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

var myHelper: MyHelper? = nil 
+0

当我尝试调用函数它给了我另一个错误:“”MyHelper?没有名为startMyHelperTimer的成员“”,这是MyHelper内部函数 – MBH 2015-03-03 00:53:43

1

您可以myHelper可选:

var myHelper:MyHelper?

当你使用它,与第一解开它:

if let myHelper = myHelper { 
    myHelper.yourFunction() 
} else { 
    // self.myHelper == nil 
} 

或者你可以用!解开:

myHelper!.yourFunction()

但是如果myHelper为零,它会崩溃。

+0

现在当我尝试调用一个函数时,它给了我另一个错误:“”MyHelper?没有名为startMyHelperTimer的成员“”,这是MyHelper – MBH 2015-03-03 00:57:21