gpt4 book ai didi

json - AnyObject(来自 JSONObjectWithData)不可转换为 [String : Any]

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

我从使用 [String : AnyObject] 字典转向使用 [String : Any],希望能够在字典值中利用原生 Swift 值类型(例如 String),而不是旧的基础值类型(例如 NSString)。这似乎几乎在任何地方都有效,但是在我想要实现的目标的源头是这行代码:

let json = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil)

在 Swift 中,这会返回一个 AnyObject!,当我使用 println 在控制台中显示它时,它看起来完全符合预期,并且调试区域中的长签名表明它是 NSDictionary 的基础,但是当我尝试在上面一行的末尾使用 as [String : Any] 进行转换,但出现以下错误:

AnyObject 不能转换为 [String : Any]

为什么会发生这种情况,我该如何解决它,请记住我确实想在这里使用 [String : Any],并且看不出有任何充分的理由不可能这样做,这是一个很好的解决方案。

最佳答案

在 Playground 中进行了一些试验后,下面的代码似乎可以正常工作。请注意,Any 不起作用,而 AnyObject 似乎按预期工作。

let jsonString = "{\"name\":\"John\", \"age\":23}"
let jsonData = jsonString.dataUsingEncoding(NSUTF8StringEncoding)
let json = NSJSONSerialization.JSONObjectWithData(jsonData,
options: NSJSONReadingOptions.MutableContainers, error: nil) as [String:AnyObject]
// ["name": "John", "age": __NSCFNumber]
let name = json["name"] as AnyObject! as String // "John"
let age = json["age"] as AnyObject! as Int // 23

关于json - AnyObject(来自 JSONObjectWithData)不可转换为 [String : Any],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25349735/

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