Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用Alamofire.request(URLRequestConvertible)时缺少参数#2的参数_Alamofire - Fatal编程技术网

调用Alamofire.request(URLRequestConvertible)时缺少参数#2的参数

调用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

尝试使用建议的自定义URLrequestConverable方法传入身份验证标头

下面是我的URLrequestConverable对象,它符合协议:

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,你最终明白了吗?如果我的答案对你有帮助,你能把它标记为一个好的社区用户吗?干杯。