我在这个函数中使用 Alamofire 来处理我的请求,如果有人可以帮助我,我会遇到这个错误,请提前致谢。
Expression type 'DataRequest' is ambiguous without more context
func report(_ track: Track, completionHandler: @escaping (_ error: NSError?) -> Void) {
var headers:[String:String] = [:]
if AuthManager.defaultAuthManager().isLoggedIn() {
headers = ["Authorization": "Bearer " + AuthManager.defaultAuthManager().authToken.token!]
}
let params: [String: Any] = ["trackCode": track.code]
let urlString = Cizoo.APIBaseUrl + CizooScheme.report
CizooAPI.manager.request(urlString, method: .post, parameters: params, encoding: .JSONEncoding.default, headers: headers as HTTPHeaders)
.validate()
.responseJSON(completionHandler: { // Error at this line
response in
switch response.result {
case .success:
completionHandler(error: nil)
case .failure(let error):
completionHandler(error: error)
}
})
}
最佳答案
从Alamofire源码可以看出方法的声明是:
@discardableResult
open func request(
_ url: URLConvertible,
method: HTTPMethod = .get,
parameters: Parameters? = nil,
encoding: ParameterEncoding = URLEncoding.default,
headers: HTTPHeaders? = nil)
-> DataRequest
{
var originalRequest: URLRequest?
do {
originalRequest = try URLRequest(url: url, method: method, headers: headers)
let encodedURLRequest = try encoding.encode(originalRequest!, with: parameters)
return request(encodedURLRequest)
} catch {
return request(originalRequest, failedWith: error)
}
}
在您的情况下,urlString 可能不符合 URLConvertible 协议(protocol)。
关于ios - 表达式类型 'DataRequest' 在没有更多上下文 Swift 的情况下是不明确的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40937616/