Swift 3.0,Alamofire 4.0在调用中额外的参数“方法”

我已经阅读了关于这个和这个问题的所有问题。 我有以下代码

let fullURL = God.getFullURL(apiURL: self.apiUrl) if (getOrPost == God.POST) { Alamofire.request(fullURL, method: .POST, AnyObject: self.postData?, encoding:.JSONEncoding.default, headers: nil).responseJSON{ response in self.responseData = response.result.value } } else if (getOrPost == God.GET) { Alamofire.request(fullURL, method : .GET, Parameters: getData, encoding:.JSONEncoding.default, headers: nil).responseJSON{ response in self.responseData = response.result.value } } 

我的Swift和Xcode版本是

 Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1) Target: x86_64-apple-macosx10.9 Version 8.2.1 (8C1002) 

我的pod文件是

 source 'https://github.com/CocoaPods/Specs.git' platform :ios, '10.0' use_frameworks! target 'Buseeta' do pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'master' end pod 'AlamofireObjectMapper', '~> 4.0' pod 'SwiftyJSON' 

在两个Alamofire请求行中,我都会Extra argument 'method' in call错误中获得Extra argument 'method' in call

不要仔细检查,不要把这个问题标为重复。 我完全按照重复的问题修正了代码。

编辑1

我尝试删除标题,同样的问题.POST.GET

 let fullURL = God.getFullURL(apiURL: self.apiUrl) if (getOrPost == God.POST) { Alamofire.request(fullURL, method: .POST, AnyObject: self.postData?, encoding:.JSONEncoding.default).responseJSON{ response in self.responseData = response.result.value } } else if (getOrPost == God.GET) { Alamofire.request(fullURL, method : .GET, Parameters: getData?, encoding:.JSONEncoding.default).responseJSON{ response in self.responseData = response.result.value } } 

编辑2

 if (getOrPost == God.POST) { Alamofire.request(fullURL, method: .post, parameters: self.postData?, encoding:.JSONEncoding.default).responseJSON{ response in self.responseData = response.result.value } } else if (getOrPost == God.GET) { Alamofire.request(fullURL, method : .get, parameters: getData?, encoding:.JSONEncoding.default).responseJSON{ response in self.responseData = response.result.value } } 

编辑3

我用method : HTTPMethod.get,replacemethod : HTTPMethod.get,仍然没有改变。 同样的问题。

您需要使用其他function上传数据:

 func upload( _ data: Data, to url: URLConvertible, method: HTTPMethod = .post, headers: HTTPHeaders? = nil) -> UploadRequest 

并且GET请求的参数必须是[String:Any]

答案在你的链接,这里是方法请求的新定义:

 let fullURL = God.getFullURL(apiURL: self.apiUrl) if (getOrPost == God.POST) { Alamofire.request(fullURL, method: .post, parameters: self.postData?, encoding:.JSONEncoding.default).responseJSON{ response in self.responseData = response.result.value } } else if (getOrPost == God.GET) { Alamofire.request(fullURL, method : .get, parameters: getData, encoding:.JSONEncoding.default).responseJSON{ response in self.responseData = response.result.value } } 

我试过的是

 var postData : Parameters? var getData : Parameters? 

在init中,我像这样初始化postData

 self.postData = try! JSONSerialization.data(withJSONObject: postData, options: JSONSerialization.WritingOptions.prettyPrinted) 

  if (getOrPost == God.POST) { Alamofire.request(fullURL, method: HTTPMethod.post, parameters: postData as Parameters?, encoding: JSONEncoding.default, headers: nil).responseJSON{ response in self.responseData = response.result.value } } else if (getOrPost == God.GET) { Alamofire.request(fullURL, method: HTTPMethod.get, parameters: getData, encoding: JSONEncoding.default, headers: nil).responseJSON{ response in self.responseData = response.result.value } } 

编辑

这编译没有错误:)。 我尝试了@ cosmicman66的uploadbuild议

 if (getOrPost == God.POST) { Alamofire.upload(postData!, to: fullURL, headers:nil).responseJSON { response in self.responseData = response.result.value } } else if (getOrPost == God.GET) { Alamofire.request(fullURL, method: HTTPMethod.get, parameters: getData, encoding: JSONEncoding.default, headers: nil).responseJSON{ response in self.responseData = response.result.value } } 

编辑

这没有奏效。 请求没有达到。 我读了上传不应该用于POST的地方。

我得到这个错误,当我传递一个NSDictionaryparameters而不是说错误消息是误导。

根据文档,请求的参数是[String:Any]types。 我这样做了我的问题。

我在Xcode 8.3.1,Alamofire 4.4.0

这是我工作的代码:

 Alamofire.request(requestUrl, method: .post, parameters: requestParameters(), encoding: JSONEncoding.default, headers: nil) .responseJSON { response in print(response) } 

requestUrl是String, requestParameters()返回types为[String:Any]的swift字典。 它是JSONEncoding.default ,而不是.JSONEncoding.default

请参考GitHub上的这个主题进行说明:

https://github.com/Alamofire/Alamofire/issues/1508