我正在尝试在 Swift 中为 Alamofire 进行扩展,并使用以下代码:
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)
})
}
}
这给了我编译器错误:
错误:(21, 36) 表达式类型不明确,没有更多上下文
有趣的是,当我注释掉这一行时,它会编译:
// completionHandler(.Failure(result.error!))
如何为 Swift 提供足够的类型信息来完成这项工作?