2017-06-01 64 views
0

我有一个迅速要求alamofire和我不知道为什么它是扔Extra Argument 'Method' in CallAlamofire 4.4.0:在呼叫额外的参数为“方法”:不知道什么是投掷的错误

Alamofire.request(
       URL(string: "https://api.io"), 
       method: .post, 
       parameters: [ 
        "grant_type": "client_credentials", 
        "client_id": "user00941", 
        "client_secret": "ILGddu8y8g7qW" 
       ], 
       encoding: .urlEncodedInURL 
       ).response { 

        request, response, data, error in 

        let json = JSON(data: data!) 

        print("OAuth 2 token obtained from API: \(json["access_token"])") 

        let token = "Bearer \(json["access_token"].stringValue)" 

      } 

我一直看着各种其他帖子,但似乎无法找到一个适合我的代码的解决方案。

回答

1

your original code的问题是,你正在使用的argument labelurl即使Alamofire.request function signature省去了它:

public func request(
    _ url: URLConvertible, 
    method: HTTPMethod = .get, 
    parameters: Parameters? = nil, 
    encoding: ParameterEncoding = URLEncoding.default, 
    headers: HTTPHeaders? = nil) 
    -> DataRequest 

删除url:从您的函数调用会照顾认为错误的,但斯威夫特应该再提醒你一个“可选类型的URL值”? [不]未打开。“虽然你可以使用forced unwrapping提取网址的价值,我会建议使用optional binding代替:

if let url = URL(string: "https://api.io") { 
    Alamofire.request(
        URL(string: "https://api.io"), 
        method: .post, 
        parameters: [ 
         "grant_type": "client_credentials", 
         "client_id": "user00941", 
         "client_secret": "ILGddu8y8g7qW" 
        ], 
        encoding: .urlEncodedInURL 
        ).response { 
         request, response, data, error in 

         let json = JSON(data: data!) 

         print("OAuth 2 token obtained from API: \(json["access_token"])") 

         let token = "Bearer \(json["access_token"].stringValue)" 
        } 
} 

或者,你可以使用一个guard声明通过您的代码,以保持一个Golden Path

guard let url = URL(string: "https://api.io") else { 
    return 
} 
+0

感谢您的帮助,但是这并没有工作.. :( –

+0

你现在得到一个不同的错误 –

+0

不......一样的:?在呼叫 –

0

此代码有几个错误。编码参数需要设置为JSONEncoding.default而不是.urlEncodedInURL

除此之外,request, response, data, error in需要更改为response in。要获取数据和错误使用response.dataresponse.error