Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.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
Ios Swift 3.0迁移后的Alamofire错误:“;Call'中的额外参数”;(请求方法)_Ios_Swift3_Alamofire - Fatal编程技术网

Ios Swift 3.0迁移后的Alamofire错误:“;Call'中的额外参数”;(请求方法)

Ios Swift 3.0迁移后的Alamofire错误:“;Call'中的额外参数”;(请求方法),ios,swift3,alamofire,Ios,Swift3,Alamofire,我目前正在将我的代码库更新为Swift 3.0,我正在使用Alamofire。因此,我不得不将Alamofire更新为4.0(Alamofire git repo)。我有一个从服务器获取数据的请求方法,在迁移之前,它工作得非常好。在使用Xcode的迁移工具后,我出现了以下错误:“调用中的额外参数”我不太清楚为什么这个方法不再有效。任何帮助都会很好 class func makeRequest( _ method: RequestMethod, authorization: Str

我目前正在将我的代码库更新为Swift 3.0,我正在使用Alamofire。
因此,我不得不将Alamofire更新为4.0(Alamofire git repo)。
我有一个从服务器获取数据的请求方法,在迁移之前,它工作得非常好。
在使用Xcode的迁移工具后,我出现了以下错误:
“调用中的额外参数”

我不太清楚为什么这个方法不再有效。
任何帮助都会很好

class func makeRequest(
    _ method: RequestMethod,
    authorization: String?,
    uri: String,
    params: JSONDictionary?,
    retry: Bool = true,
    completionHandler: @escaping RequestCompletionBlock)
{

    let requestURL = baseURL + uri
    let authHeader: Dictionary<String, String>? = authorization != nil ? ["Authorization" : authorization!] : nil

    //requestURL is highlighted, says "Extra argument in call"
    sharedAlamofireManager.request(Method(rawValue: method.rawValue)!, requestURL, parameters: params, encoding: .JSON, headers: authHeader).responseJSON {
        response in

    }
}
class func makeRequest(
_方法:RequestMethod,
授权:字符串?,
uri:String,
参数:JSONDICTIONAL?,
重试:Bool=true,
completionHandler:@escaping RequestCompletionBlock)
{
让requestURL=baseURL+uri
let authHeader:Dictionary?=授权!=nil?[“授权”:授权!]:nil
//requestURL高亮显示,表示“调用中的额外参数”
请求(方法(rawValue:Method.rawValue)!,请求URL,参数:params,编码:.JSON,头:authHeader)。响应JSON{
回应
}
}

编辑:JSONDictionary:

typealias JSONDictionary = Dictionary<String, Any>
typealias JSONDictionary=字典

sharedAlamoFireManager也是一个SessionManager,根据AlamoFire文档
请求适配器协议是AlamoFire 4中的一个全新功能。它允许在创建SessionManager上发出的每个请求之前进行检查和适配。使用适配器的一种非常具体的方法是将授权头附加到请求后面特定类型的身份验证。

标头不再是请求方法的参数,而是在请求适配器内部设置的

首先,我必须创建AccessTokenAdapter类:

class AccessTokenAdapter: RequestAdapter {
    private let accessToken: String

    init(accessToken: String) {
        self.accessToken = accessToken
    }

    func adapt(_ urlRequest: URLRequest) throws -> URLRequest {
        var urlRequest = urlRequest

        if urlRequest.urlString.hasPrefix(RequestManager.returnBaseURL()) {
            urlRequest.setValue("Bearer " + accessToken, forHTTPHeaderField: "Authorization")
        }

        return urlRequest
    }
}
然后我需要更新我的方法:

class func makeRequest(
    _ method: RequestMethod,
    authorization: String?,
    uri: String,
    params: JSONDictionary?,
    retry: Bool = true,
    completionHandler: @escaping RequestCompletionBlock)
{

    let requestURL = baseURL + uri
    var accessToken: String?
    if let authorization = authorization {
        accessToken = authorization
    }else{
        accessToken = self.token()!
    }

    sharedAlamofireManager.adapter = AccessTokenAdapter(accessToken: accessToken!)

    sharedAlamofireManager.request(requestURL, method: .get, parameters: params, encoding: JSONEncoding.default)
        .responseJSON { response in

    }
}

您好,我正在尝试按照文档进行操作,并得到一个编译错误: