Swift 3 - 如何从包含字符串的索引中读取 json 输出
Posted
技术标签:
【中文标题】Swift 3 - 如何从包含字符串的索引中读取 json 输出【英文标题】:Swift 3 - How to read a json output from an index that contains a string 【发布时间】: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。
【参考方案1】:
randomImgIndex
已经是所需的字典。
变化:
let finalImgUrl = randomImgIndex[random]["url"] as! String
到:
let finalImgUrl = randomImgIndex["url"] as! String
附带说明,您需要停止使用所有!
和as!
运算符。如果数据不完全符合预期,您的应用程序将崩溃。当您获取超出您控制范围的数据时进行防御性编码。
【讨论】:
谢谢你,成功了。并且尝试遵循该建议,这通常是当我注意到使用的某些东西不起作用时! ?等有时会修复它,所以我养成了这样做的习惯。以上是关于Swift 3 - 如何从包含字符串的索引中读取 json 输出的主要内容,如果未能解决你的问题,请参考以下文章
如何在swift中将字符索引从layoutManager转换为String scale