2015-03-03 94 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