我試圖做出Alamofire在斯威夫特的延伸,並有這樣的代碼:斯威夫特 - 表達的類型是ambigious沒有更多的上下文
import Foundation
import Alamofire
protocol JsonResponse
{
init?(json : NSObject)
}
extension Request
{
func responseObject<T : JsonResponse, Error: ErrorType>(completionHandler : Result<T,Error> -> Void) -> Self
{
return responseJSON(completionHandler: {r in
let result = r.result
guard result.isSuccess else {
completionHandler(.Failure(result.error!))
return
}
let obj : T? = T(json : result.value as! NSObject)
let success : Result<T,Error> = .Success(obj!)
completionHandler(success)
})
}
}
這使我的編譯器錯誤:
Error:(21, 36) type of expression is ambiguous without more context
有趣的是,當我註釋掉這一行,它編譯:
// completionHandler(.Failure(result.error!))
如何給斯威夫特足夠的類型信息使這項工作?
作爲完成處理程序的參數沒有提供足夠的類型上下文,我有點驚訝。 –