Alamofire4在使用方法时抛出“额外参数方法”:.post
Posted
技术标签:
【中文标题】Alamofire4在使用方法时抛出“额外参数方法”:.post【英文标题】:Alamofire4 throwing "extra argument method" when using method: .post 【发布时间】:2017-01-28 00:02:07 【问题描述】:我一直在从 Swift2/AF3 过渡到 Swift3/AF4,这绝对是一场噩梦。 Xcode 抛出“额外参数方法”错误,但这是错误的,这使我几乎不可能找到实际错误是什么。在我的代码周围的多个地方,我有
Alamofire.request(url, method: .put, parameters: parameters,
encoding: JSONEncoding.default, headers: headers).validate().responseJSON() response in ...
其中url
是string
,method
是可用的枚举之一,parameters
和headers
是[String: Any]
。但是当我将方法更改为 .post 时,我得到“额外参数”错误。我一生都无法弄清楚这有什么问题。我尝试了.validate()
和没有。
let url = "myStringHere"
let params = ["myString": myString] as [String: Any]
let headers = ["Authorization": myString, "AnotherString": stringValue] as [String: Any]
Alamofire.request(url, method: .post, parameters: params,
encoding: JSONEncoding.default, headers: headers).responseJSON(completionHandler: response in ...
为了便于阅读,我添加了一个换行符。 validate()
将在 request()
和 responseJSON
之间切换,就像我对 .put
方法所做的那样,我已将其更新为新语法而不会出现此问题。我在这里完全不知所措。
编辑:只是想说我已经通过进入 .post request() 和选项+单击变量来仔细检查它们的类型来确保类型。唯一不能使用 option+click 的是method: .post
。我检查了其他答案,但没有一个有效,大多数只是来自encoding: .json
-> encoding: JSONEncoding.default
的问题,但你可以清楚地看到这就是我所拥有的。
edit2:尝试将encoding
切换为URLEncoding.httpBody
,但这也没有奏效。我从 Alamofire 收到一百万个错误,我的 Xcode 甚至无法一次处理它们。这有什么关系吗?
【问题讨论】:
【参考方案1】:“标题”参数类型是 [String : String],而不是 [String : Any]。你被误导性的错误描述抓住了。
【讨论】:
天哪,我认为这解决了它。我的代码到处都使用 AF,所以我有数百个错误需要自己修复。头撞墙这么久了。非常感谢!!! 我建议制作一个像 RequestHandler 这样的适配器。唯一使用 Alamofire API 的对象。这样,迁移到新版本的 Alamofire 将在一个地方进行,因为您项目的其他部分将使用适配器的 API。 所以就像制作我自己的 MyRequest.request() 一样,它接受 AF.request() 所需的参数,然后当 AF 代码更改时,我只需要更改 MyRequest 中的一个函数上课? 是的,没错。如果更改参数名称或其他内容,更新某些 Alamofire API 的每次出现并不是很有趣。创建自己的适配器以使用某些框架是一种常见的做法。以上是关于Alamofire4在使用方法时抛出“额外参数方法”:.post的主要内容,如果未能解决你的问题,请参考以下文章
Hibernate 在尝试使用合并方法更新对象时抛出 DataIntegrityViolationException
JSON.Net 在使用 [JsonConvert()] 时抛出 ***Exception
MenuItem.setIcon 在使用 BottomNavigationBar 时抛出 NullPointerException