誰かがこれがうまくいかない理由を私に説明することはできますか?汎用パラメータTを推測できませんでした。工場の方法
私はこのようなファクトリメソッドを持つクラスをしている:次に、喜んでそれをコンパイルすることを知った後、私はこのようなタスクを作成するために行く
public class NetworkTask<T> {
var request: URLRequest
var completionHandler: NetworkResponse<T> -> Void
init(request: URLRequest, completionHandler: NetworkResponse<T> -> Void) {
self.request = request
self.completionHandler = completionHandler
}
static func dataResponseTaskWithRequest(request: URLRequest, completionHandler: NetworkResponse<NSData> -> Void) -> NetworkTask<NSData> {
return NetworkTask<NSData>(request: request, completionHandler: completionHandler)
}
static func mappedObjectResponseTaskWithRequest<MappedType>(request: URLRequest, completionHandler: NetworkResponse<MappedType> -> Void) -> NetworkTask<MappedType> {
return NetworkTask<MappedType>(request: request, completionHandler: completionHandler)
}
}
:
let task = NetworkTask.dataResponseTaskWithRequest(URLRequest()) { (response) in
}
いや...
ジェネリックパラメータTを推測することができませんでした
私がはっきりと推測できるので、メソッドはNetworkTask<NSData>
を返します。したがってTはNSDataです。
[OK]を...次に、このようなのでしょうか?
let task: NetworkTask<NSData> = NetworkTask.dataResponseTaskWithRequest(URLRequest()) { (response) in
}
いや...
タイプの引数リストで 'dataResponseTaskWithRequest' '(URLRequestの、(_) - > _')を呼び出すことはできませんので、多分、
[OK]を他の方法:
let task = NetworkTask.mappedObjectResponseTaskWithRequest(URLRequest()) { (response: NetworkResponse<String>) in
}
いや...
0予想 引数の型へ -型の値に変換できません '>()(NetworkResponseを)' 'NetworkResponse < _> - >ボイド'
コンパイラは「可能性があるため、私は明らかにここで何かが欠けする必要があります非常に多くのエラーがあります。誰か手掛かりがありますか?
これは間違いありません。私の場合、それはポイントを打つので、私は静的メソッドを持つTaskBuilderクラスを作成しました。このアプローチはうまくいくようです。ご回答どうもありがとうございました。 – diegomontoyas