无法使用“((Any))”类型的参数列表调用“JSON” - 使用 AlamoFire 和 SwiftyJSON
Posted
技术标签:
【中文标题】无法使用“((Any))”类型的参数列表调用“JSON” - 使用 AlamoFire 和 SwiftyJSON【英文标题】:Cannot invoke 'JSON' with an argument list of type '((Any))' - Using AlamoFire & SwiftyJSON 【发布时间】:2020-04-07 18:09:18 【问题描述】:在我之前使用旧版本的 Alamofire 和 SwiftyJSON 的项目中,使用 JSON(response.result.value) 效果很好。我试图在我的新项目中实现代码,但遇到了一些我以前从未见过的错误。我确实在 SO 上看到了一些关于它的问题,但似乎没有一个解决方案可以解决我的问题(除非我错过了什么)。
AF.request(self.apiEndpoint,
method: .get,
parameters: self.parameters,
headers: self.headers,
interceptor: nil).validate().responseJSON (response) in
switch response.result
case .success(let value):
let json = JSON(value)
print(json)
case .failure(_):
print(response)
这会返回以下错误:
Cannot invoke 'JSON' with an argument list of type '((Any))'
【问题讨论】:
responseJSON
可以是Any
thing,您必须将其转换为预期的类型。一个简单的解决方案是将responseJSON
替换为responseData
我遇到了同样的问题:无法使用类型为“((数据))”的参数列表调用“JSON”
您可以使用显式初始化程序JSON(data:
,但它也应该按照建议工作。你使用最新版本的 SwiftyJSON 吗?
是的,我使用的是 cocoapods 可用的最新版本。当我添加标签 JSON(data: value) 时,我得到: Extraneous argument label 'data:' in call
【参考方案1】:
这是一个奇怪的情况。但是,我设法确定的是,如果我打电话
JSON(value)
这失败了,因为无法调用类型为 (Any) 的构造函数。
但是,当我如下明确命名模块时:
let json = SwiftyJSON.JSON(value)
Xcode 不再抱怨该错误。
确实很奇怪。我确实回去检查 JSON() 在尝试使用它时是否引用了 SwiftyJSON 而没有专门命名模块 - 只是为了验证没有某种方法命名与其他东西发生冲突 - 它确实如此。所以我不完全确定为什么会这样,但希望它可以帮助其他人。或者如果我做错了什么,有人可以给我一个更好的答案。
【讨论】:
以上是关于无法使用“((Any))”类型的参数列表调用“JSON” - 使用 AlamoFire 和 SwiftyJSON的主要内容,如果未能解决你的问题,请参考以下文章
无法使用类型为“()”的参数列表为类型“Int”调用初始化程序
无法使用类型参数列表调用“requestAuthorizationToShareTypes”
无法使用类型参数列表调用“requestAuthorizationToShareTypes”
无法使用“UIImagePickerController.InfoKey”类型的参数为“[String : Any]”类型的值下标