2016-11-03 73 views
0

我寫的代碼片段用於在遷移到swift之前工作魅力3.但是,世界末日,我將它遷移到XCode 8,我似乎無法解析這個錯誤在我的代碼中。這個問題出於我的理解。我想我已經錯過了這裏的基礎知識。 DateCallBack是我在聲明我的類之前定義的一個typealias。無法調用非函數類型的值DateCallBack

typealias DateCallBack = ((_ year: Int?, _ month: Int?) -> Void) 

然後我宣佈了一個DateCallBack的實例。

private var callBack: DateCallBack! 

然後是類的擴展中,我已經實現了兩個方法

func cancelButtonAction() { 
    self.callBack(year: nil, month: nil) 
    self.animateOut { (completion) in 
     if completion { 
      self.removeFromSuperview() 
     } 
    } 
} 

func doneButtonAction(_ yearIndex: Int!, monthIndex: Int!) { 
    self.callBack(year: yearIndex, month: monthIndex) 
    self.animateOut { (completion) in 
     if completion { 
      self.removeFromSuperview() 
     } 
    } 
} 

而我得到的錯誤是Cannot call a value of non-function type DateCallBack兩個功能self.callBack是兩者的功能第二行。 請解釋我也錯過了什麼。

+1

如果你像這樣'self.callBack(yearIndex,monthIndex)''調用它,你會得到同樣的錯誤嗎? –

+0

謝謝你的隊友,那是我無法弄清楚的問題。 – amagain

+0

不客氣,我會將評論轉換爲答案,以便您接受它。 –

回答

1

您定義的函數定義爲(_ year: Int?, _ month: Int?) -> Void所以沒有參數名稱時,這就是所謂的(因爲_每個參數之前的)。

所以,你這樣稱呼它:

self.callBack(yearIndex, monthIndex) 

如果你想在函數調用看起來像在你的代碼

self.callBack(year: yearIndex, month: monthIndex) 

你應該定義函數象下面這樣:

(year: Int?, month: Int?) -> Void 
+0

精美的解釋,我需要! – amagain

0

這解決了我的問題,謝謝@bogdanf

self.callBack(yearIndex, monthIndex) 
相關問題