【问题标题】:Swift 3 - How to read a json output from an index that contains a stringSwift 3 - 如何从包含字符串的索引中读取 json 输出
【发布时间】:2018-09-06 15:16:28
【问题描述】:

我正在使用 api 来获取一些 json 信息,这是一个示例:

multimedia: [
{
  url: "small.jpg"
  format: "small"
},
{
  url: "medium.jpg"
  format: "medium"
},
{ url: "large.jpg"
  format: "large"
}  
]

如您所见,多媒体容器有许多大小不同的图像 url,我只想读取其中一个,例如仅 medium.jpg 的 url。

我的代码是这样的,它首先读取多媒体容器:

let randomImg = result[random]["multimedia"] as! [[String: AnyObject]]

然后我创建了另一个变量来读取我想要的索引:

let randomImgIndex = randomImg[1]

所以当我尝试获取最终字符串时,我得到了错误:

let finalImgUrl = randomImgIndex[random]["url"] as! String

错误:无法使用“Int”类型的索引为“[String : AnyObject]”类型的值下标

我对 swift 很陌生,所以我完全迷路了。

【问题讨论】:

  • Swift 4 有Decodable,这使得这样的事情变得非常容易。你有什么理由推迟升级到 Swift 4?
  • 嗯,我被教导使用 swift 3,所以我不得不坚持下去,当我有点适应 swift 3 时,我没有信心跳到 swift 4。

标签: arrays json swift


【解决方案1】:

randomImgIndex 已经是所需的字典。

变化:

let finalImgUrl = randomImgIndex[random]["url"] as! String

到:

let finalImgUrl = randomImgIndex["url"] as! String

附带说明,您需要停止使用所有!as! 运算符。如果数据不完全符合预期,您的应用程序将崩溃。当您获取超出您控制范围的数据时进行防御性编码。

【讨论】:

  • 谢谢你,成功了。并且尝试遵循该建议,这通常是当我注意到使用的某些东西不起作用时! ?等有时会修复它,所以我养成了这样做的习惯。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多