SwiftyJSON遍历报错:无法将'(String, JSON)'转换为'[JSONSubscriptType]'类型
问题原因
你使用的SwiftyJSON库中,直接对JSON类型的数组结构执行遍历操作时,得到的循环变量是(key: String, value: JSON)格式的元组,并非你预期的数组下标索引值,将元组直接作为下标参数传入时,就会触发类型不匹配的报错。
你写的固定下标0可以正常运行,是因为0属于符合SwiftyJSON下标要求的Int类型参数,能正常匹配数组的索引规则。你尝试把元组强转为Int的操作本身就不成立,自然无法解决问题。
解决方法
方法1:直接取遍历得到的元素值(最推荐)
遍历过程中可以直接拿到每个媒体资源的JSON对象,无需再通过下标重复读取数组,性能更高:
// 先提前提取公共部分,避免循环中重复解析 let mediaList = JSON(response.value!)["post"]["media"] for (_, mediaItem) in mediaList { print(mediaItem["image_url"]) }
方法2:转成标准数组后遍历索引
如果确实需要用到索引值,可以先把JSON结构转为数组类型再遍历:
let mediaArray = JSON(response.value!)["post"]["media"].arrayValue for index in mediaArray.indices { print(mediaArray[index]["image_url"]) }
内容的提问来源于stack exchange,提问作者idris
相关产品推荐
相关产品推荐

