2016-04-25 8 views
3

GET要求を実行し、次に<T>のデータを解析しようとする静的関数があります。一般的なパラメータ 'T'はクロージャでは推測できません

public static func get<T>(url: NSURL, paramaters: [String : AnyObject]?, paramaterEncoding: ParameterEncoding, compleation:(response: Response<T>) -> Void) 

私はそれをどのように呼びますか?

私は、これらの通常の機能は、単に以下の例のように返すことに変数から自分の型を取得などの機能を中心に見てからCannot explicitly specialize a generic function

let url = NSURL(string: "http://g.co")! 
typealias JsonResponse = [String : AnyObject] 
Notwork.get<JsonResponse>(url, paramaters: nil, paramaterEncoding: ParameterEncoding.json) { (response) in } 

のエラーを取得し、以下のようにそれを呼び出そうとします。

let result: Response<JsonResponse> = Notwork.get(url, paramaters: nil, paramaterEncoding: .json) 

結果は閉鎖に戻ってくるようしかし、どのように私は<T>が何であるかを指定するのですか?

おかげ


編集

以下

は、同じ問題を示しているいくつかのサンプルコードです。

import Foundation 

struct MyClass { 
    static func myFunction<T>(compleation:(response: T) -> Void) { 

     let apiResponse = ["some" : "value"] 

     guard let value = apiResponse as? T else { 
      return 
     } 

     compleation(response: value) 
    } 
} 

//Gives error "Generic parameter 'T' could not be inferred" 
MyClass.myFunction { (response) in 

} 
+0

は私たちに、私がgetメソッドは、パラメータの符号化として、この質問に関連していないそこに他のものを持っているのと同じ問題を示している例を追加した 'GET'機能 –

+0

@RMenkeの実装を示し、 ect。 –

答えて

4

関数を呼び出すときに型を明示的に指定する必要があります。 Stringが必要な場合は、String型で呼び出します。

MyClass.myFunction { (response: String) in 

} 
+0

これはうまくいきました。ありがとう。 –

関連する問題