gpt4 book ai didi

ios - Swift 中的 NSDictionary :Cannot subscript a value of type 'AnyObject?' with a index of type 'Int'

转载 作者:搜寻专家 更新时间:2023-10-30 22:09:00 25 4
gpt4 key购买 nike

所以我正在尝试使用 swift 解析 JSON 中的一些数据。下面是我的代码

var jsonResult:NSDictionary! = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary

println(jsonResult)

上面的代码会返回这样的东西

{
count = 100
subjects = (
{
alt = "....."
name = "....."
},
{
alt = "....."
name = "....."
},

......
)
}

然后我尝试使用 jsonResult["subjects"] 访问所有主题,到目前为止一切顺利但是当我尝试访问单个主题时,例如 jsonResult["subjects"][0],Xcode 给我错误:无法下标“AnyObject?”类型的值?具有“Int”类型的索引有人可以帮我解决这个问题吗?

最佳答案

当您为字典下标时,如在 jsonResult["subjects"] 中,您会得到一个 Optional。您需要打开 Optional 的包装。此外,因为这个字典来自 JSON,Swift 不知道 Optional 包含什么样的东西:它被类型化为 AnyObject - 这就是为什么 Swift 将 Optional 描述为 AnyObject?。所以你也告诉 Swift 这个真的是什么类型的对象 - 它是一个字典数组,你需要告诉 Swift 那个,否则你将无法用 [0 下标]

你可以一步完成这两件事,就像这样:

if let array = jsonResult["subjects"] as? [[NSObject:AnyObject]] {
let result = array[0]
// ...
}

如果你非常非常确定你的立场,你可以强制展开和转换,并将其减少到一行,如下所示:

let result = (jsonResult["subjects"] as! [[NSObject:AnyObject]])[0]

但我不推荐这样做。出错的方式太多了。

关于ios - Swift 中的 NSDictionary :Cannot subscript a value of type 'AnyObject?' with a index of type 'Int' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29959130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com