2016-05-26 10 views
0

関数内でパラメーターとしてcompletionHandlerを渡そうとしています(問題はありません)。 私の問題は、私が私のcompletionHandler関数で受け取ることができる複数の正確なTypesを持つことです。Swift - 関数内でパラメーターとしてテンプレート化されたCompletionHandler(UsingObjectMapper)

私は「テンプレートを使ってみましょう」と考えてみました。

これは私が使用するスキームである: FUNCA(がMyTypeとしてcompletionHandler?) - > funcBの(..){completionHandler(マッピング可能?)} - > FuncC(送信者:T?){performSegueWithIdentifier(」セグエ」、送信者が)}

問題: のFunc Aは私に のFunc BはOK のFunc Cであると思われるエラーを印刷しているが、大丈夫のようです

あなたは男、私はそれを行う方法を知っていますかまだテンプレートには使用されていませんか? 助けてくれてありがとうございました:)

答えて

1

私はあなたがメソッドシグネチャでcompletionHandlerをキャストできるとは思わない。メソッド本体の内部で型キャスティングを行う必要があります。例えば

typealias handler =() -> Array<AnyObject> 

    funcA(handler) 

    func funcA<T>(completion: T?) -> funcB { 

    if let completion = completion as? handler { 
     let array = completion() 
     //do whatever you want here 
    } 
    }