调用Alamofire.request(URLRequestConvertible)时缺少参数#2的参数
尝试使用建议的自定义URLrequestConverable方法传入身份验证标头 下面是我的URLrequestConverable对象,它符合协议:调用Alamofire.request(URLRequestConvertible)时缺少参数#2的参数,alamofire,Alamofire,尝试使用建议的自定义URLrequestConverable方法传入身份验证标头 下面是我的URLrequestConverable对象,它符合协议: class SecureJSONRouter : URLRequestConvertible { var type: String var token: String var parameters: [String: AnyObject] init(typevar: String, tokenvar: String, parametersv
class SecureJSONRouter : URLRequestConvertible {
var type: String
var token: String
var parameters: [String: AnyObject]
init(typevar: String, tokenvar: String, parametersvar: [String: AnyObject]) {
type = typevar
token = tokenvar
parameters = parametersvar
}
var URLRequest: NSURLRequest {
let URL = NSURL(string: da_url)!
let URLRequesting = NSMutableURLRequest(URL: URL.URLByAppendingPathComponent(type))
let encoding = Alamofire.ParameterEncoding.JSON
URLRequesting.setValue(token, forHTTPHeaderField: "Authorization")
return encoding.encode(URLRequesting, parameters: parameters).0
}
}
它基本上是一个存储一些东西的地方,比如一点URL和一个令牌,以及一种使用完整URL、JSON参数和用于授权的头字段创建NSURLRequest的方法
当我试着这样称呼它时:
let myUrlRequest: URLRequestConvertible = SecureJSONRouter(typevar: "locations", tokenvar: token!, parametersvar: parameters)
Alamofire.request(myUrlRequest).response{ (req, resp, data, error) in
if (error != nil) {
println(req)
println(resp)
} else {
println("saved \(data)")
}
}
它不会编译,在请求行给我一个“调用中缺少参数#2的参数”错误
有什么想法吗
PS:我确实将SecureJSONRouter作为推荐的枚举而不是类,但我得到了相同的错误。我查看了协议定义,并认为在我的例子中它没有理由不能是一个更简单的(类),所以我更改了它。还是一样的错误 我想这里可能有几个罪犯。首先,您确定您正在呼叫的是
Alamofire
,而不是Alamofire
?我以前见过有人犯这种错误
至于您发布的示例代码,由于一些不同的原因,它没有编译。我无法重现您看到的完全相同的编译器错误,但是这里有一个稍微修改过的版本,它确实可以编译您的原始帖子
class SecureJSONRouter : URLRequestConvertible {
var type: String
var token: String
var parameters: [String: AnyObject]
init(typevar: String, tokenvar: String, parametersvar: [String: AnyObject]) {
type = typevar
token = tokenvar
parameters = parametersvar
}
var URLRequest: NSURLRequest {
let URL = NSURL(string: "http://httpbin.org")!
let URLRequesting = NSMutableURLRequest(URL: URL.URLByAppendingPathComponent(type))
let encoding = Alamofire.ParameterEncoding.JSON
URLRequesting.setValue(token, forHTTPHeaderField: "Authorization")
return encoding.encode(URLRequesting, parameters: parameters).0
}
}
下面是一个调用SecureJSONRouter
的示例
let token: String? = "my_fancy_token"
let parameters: [String: AnyObject] = ["sample_parameter": "sample_parameter_value"]
let myUrlRequest: URLRequestConvertible = SecureJSONRouter(typevar: "locations", tokenvar: token!, parametersvar: parameters)
Alamofire.request(myUrlRequest).response{ (req, resp, data, error) in
if (error != nil) {
println(req)
println(resp)
} else {
println("saved \(data)")
}
}
这是针对Alamofire 1.1.3版本使用Xcode 6.1.1编译的。希望有帮助 我正在使用枚举,并且看到了相同的问题。但是,只有当我通过闭包向委托方法发送响应时,它才会弹出。然后执行variable.response{}。看来已经修好了谢谢你的线索Travis。可悲的是,这没有帮助。不过,这似乎可能是Swift编译器的问题。Alamofire.request方法只是
public func请求(URLRequest:URLRequestConvertible)->请求{return Manager.sharedInstance.request(URLRequest.URLRequest)}
因此,我尝试直接更改对Manager.sharedInstance.request的调用,现在我收到编译器错误架构x86的未定义符号\u 64:“\uu TMaC9AlamoFire7Manager”,引用自:
谢谢,我会尝试一下并让您知道。不起作用:(.我突然想到,也许我没有使用Alamofire 1.1.3版本。我怎么知道?这完全取决于您如何将Alamofire添加到项目中。如果您克隆了存储库,只需使用master,就可以获得最新版本。如果您从Github下载了zip存档,那么我建议您从和下载最新版本重新添加您的代码。如果您正在使用CocoaPods,则将版本更新为1.1.3并运行pod update
。确保设置正确的最快方法是从重新下载最新版本的Alamofire。然后将上面答案中粘贴的两个代码块添加到Alamofire游乐场中,所有内容都将正常运行rk正确。我刚刚试过,一切都正常。嗨@music\u and\u cities,你最终明白了吗?如果我的答案对你有帮助,你能把它标记为一个好的社区用户吗?干杯。