gpt4 book ai didi

ios - 转换任何对象?到 [String :AnyObject? ] 总是失败

转载 作者:搜寻专家 更新时间:2023-11-01 06:19:39 26 4
gpt4 key购买 nike

最初我在 Swift 2.1 中有这段代码

func onSuccess(jsonData: AnyObject?){
print(jsonData["message"])
}

在我升级到 Swift 2.2 之后,我得到了一个错误,例如

Ambiguous reference to 'subscript'

对于行 print(jsonData["message"])

我把我的代码改成了这个

func onSuccess(jsonData: AnyObject?) {

let json = (jsonData as? [String:AnyObject?]) ?? ["":""]
print(json)
}

但是这个语句总是失败,因为 AnyObject?到 [String:AnyObject?] 类型转换没有发生并获得 nil 合并值。我想从 AnyObject? 类型转换为 [String:AnyObject]。可能吗?

最佳答案

您可以像这样简单地使用可选绑定(bind):

func onSuccess(jsonData: AnyObject?) {
if let json = jsonData as? [String:AnyObject] {
print(json["message"])
}
}

没有充分的理由将字典值声明为像 [String:AnyObject?] 这样的 Optional,因为 Swift 字典无论如何总是返回 Optional。

此示例用于解码字典。

现在,如果您的 jsonData 不是一个字典,而是一个字典数组,您只需调整类型:

func onSuccess(jsonData: AnyObject?) {
if let json = jsonData as? [[String:AnyObject]] {
for object in json {
print(object["message"])
}
}
}

等等

关于ios - 转换任何对象?到 [String :AnyObject? ] 总是失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36398566/

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