2016-11-03 6 views
0

私が書いているコードは、swift 3に移行する前に魅力を発揮していました。しかし、終焉を迎え、XCode 8に移行しています。私のコードのこのバグ。この問題は私の理解ではありません。私はここで基礎を欠いていると思う。 DateCallBackは私のクラスを宣言する前に定義したタイプアリアです。非関数型の値を呼び出すことはできません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() 
     } 
    } 
} 

を実装していると私が手にエラーが両方の機能の2行目にある両方の機能をself.callBackに Cannot call a value of non-function type DateCallBackです。 私が逃したものを教えてください。

+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) 
関連する問題