func getCurrency()
{
let myLink:[String] = ["url1", "url2", "url3"]
for link in myLink{
let url = URL(string: link)
let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
if error != nil{
print("ERROR")
}
else{
if let content = data{
do{
if link == myLink[0]{
let myJson = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject
if let ratesusd = myJson["INR_USD"] as? Double{
self.usdValue = ratesusd
}
}
else if link == myLink[1]{
let myJson = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject
if let rateseuro = myJson["INR_EUR"] as? Double{
self.euroValue = rateseuro
}
}
else if link == myLink[2]{
let myJson = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject
if let ratespound = myJson["INR_GBP"] as? Double{
self.poundValue = ratespound
}
}
}
catch{
}
}
}
}
task.resume()
}
}
该错误会定期显示。我已将
if let content = data{
更改为if let content = data["content"] as? Double{
,但显示了另一个错误,即“可选类型'数据的值?必须解包以引用已包装基本类型“数据”的成员“下标”。我在许多站点(包括stackoverflow)上都看到了一些相关的查询,但是它们是MacOS的,但是我正在使用WatchOS。任何人请帮忙! 最佳答案
JSON对象永远不会是未指定的AnyObject
。如果您希望字典将其转换为字典
let myJson = try JSONSerialization.jsonObject(with: content) as! [String:Any]
这可以修复错误,因为编译器现在知道实型了。
而且永远不要指定
.mutableContainers
。该选项在Swift中无效