ios - 'subscript(_:)' 的模糊使用
问题描述
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 中无效
推荐阅读
- node.js - 缺少 `pino-pretty` 模块:`pino-pretty` 必须单独安装
- c# - 我使用用户帐户安全性在 Visual Studio 2022 中创建了一个新的 mvc 项目,但我使用了数据库脚手架命令来获取表
- compression - 对于网络相关的文本,Brotli 是否仅比 Gzip 更好?
- angular - 失败 ngrx 效果单元测试,其中效果标记为 { dispatch: false } 并且效果返回操作
- java - 使用覆盖方法比较排序
- python - pyOWM 没有得到预期的结果
- python - 使用数据增强层在 Tensorflow 2.7.0 上保存模型
- python - python 通过输入 instance(0, 0) 获取 instance.list[0][0]
- node.js - 等待每个人用 kafka 中的新消费者组连接到一个主题(node-rdkafka)
- node.js - Gstreamer:OPUS 到 AAC,RTP 到 HLS