由于对成员 jsonObject 的不明确引用,我无法编译我的 alamofire 代码。为啥?
Posted
技术标签:
【中文标题】由于对成员 jsonObject 的不明确引用,我无法编译我的 alamofire 代码。为啥?【英文标题】:I cannot compile my alamofire code due to ambiguous reference to member jsonObject. Why?由于对成员 jsonObject 的不明确引用,我无法编译我的 alamofire 代码。为什么? 【发布时间】:2017-03-17 00:57:11 【问题描述】:我在Swift
中有一个代码,我通过Alamofire
调用我的后端代码:
Alamofire.request(url, method: .post, parameters: (parameters), encoding: JSONEncoding.default)
.validate()
.responseJSON response in
switch response.result
case .success:
do
if let jsonData = try JSONSerialization.jsonObject(with: response.result.value, options:.allowFragments) as? [String:Any]
for requestJSON in jsonData["geojson"]["features"]
if let request = SingleCluster.fromJSON(JSON(requestJSON))
let pinOne = CustomCluster()
pinOne.coordinate = CLLocationCoordinate2D(latitude: request.latitude, longitude: request.longitude)
pinOne.amount = request.amount
self.eventsArray.append(pinOne);
catch let err
print(err.localizedDescription)
completionHandler!()
case .failure(let error):
print("error")
问题在于这一行:
if let jsonData = try JSONSerialization.jsonObject(with: response.result.value, options:.allowFragments) as? [String:Any]
带来一个错误:
Ambiguous reference to member 'jsonObject(with:options:)'
我尝试将其转换为 [String:Any]
或 [String:AnyObject]
但它没有改变任何东西。我在这里做错了什么?
【问题讨论】:
也许下面的 SO 线程有帮助? ***.com/questions/40558133/… @Fahim 是的,我已经看到了,但是由于答案中缺少代码 sn-p 我不知道如何使用这个答案:( 【参考方案1】:你已经使用responseJSON
和Alamofire
,所以你会在完成块中得到序列化的JSON,不需要使用JSONSerialization
直接使用它。
switch response.result
case .success:
if let jsonData = JSON(response.result.value)
for requestJSON in jsonData["geojson"]["features"]
if let request = SingleCluster.fromJSON(requestJSON)
let pinOne = CustomCluster()
pinOne.coordinate = CLLocationCoordinate2D(latitude: request.latitude, longitude: request.longitude)
pinOne.amount = request.amount
self.eventsArray.append(pinOne);
case .failure(let error):
print("error")
【讨论】:
【参考方案2】:改变这一行:
if let jsonData = try JSONSerialization.jsonObject(with: response.result.value, options:.allowFragments) as? [String:Any]
收件人:
if let data = response.data, let jsonData = try JSONSerialization.jsonObject(with: data, options:.allowFragments) as? [String:Any]
【讨论】:
以上是关于由于对成员 jsonObject 的不明确引用,我无法编译我的 alamofire 代码。为啥?的主要内容,如果未能解决你的问题,请参考以下文章