You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:45:02