xcode 9.3 中的 Json 数据
Posted
技术标签:
【中文标题】xcode 9.3 中的 Json 数据【英文标题】:Json data in xcode 9.3 【发布时间】:2018-04-12 11:19:34 【问题描述】:我刚刚更新到 Xcode 9.3,遇到了一些奇怪的事情。下面的 guard 语句失败,因为 json 数据不能如图所示进行强制转换;虽然在 Xcode 9.3 之前它工作得很好(就像在 Xcode 9.2 中一样)
guard let dataRates = json?["data"] as? [String : Float] else
return
问题似乎与浮动有关;所以,现在我需要使用如下所示的 Double:
guard let dataRates = json?["data"] as? [String : Double] else
return
这很好,但为什么现在需要?
数据从网上下载并序列化如下图:
let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String:Any]
...示例数据如下所示:
▿ 0 : 2 elements
- key : USDLAK
- value : 8275.999701999999
▿ 1 : 2 elements
- key : USDUZS
- value : 8074.999885
▿ 2 : 2 elements
- key : USDKWD
- value : 0.2998
感谢任何见解。
我还应该提到我使用的是 Swift 3.2。当我尝试迁移到 Swift 4 时,Xcode 迁移工具崩溃了。这是我升级到 Xcode 9.3 的原因之一;希望迁移器可以工作!
谢谢!
【问题讨论】:
请在您的问题中添加 json 值 我在上面添加了更多细节。 【参考方案1】:看起来SE-0170 已包含在 Swift 3.3 中,现在 Xcode 9.3 中已包含该功能。 Xcode 9.2 附带 Swift 3.2。所以,这就解释了为什么这是 Xcode 9.3 的问题,而不是 9.2。详情请见here。
【讨论】:
以上是关于xcode 9.3 中的 Json 数据的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 9.3(Swift 4.1)中的 Codable '没有初始化器'
如何在 swift 4.1 和 xcode 9.3 中使用 JSONDecoder 解码嵌套的 JSON 数组和对象?
堆栈视图中的自动约束冲突、Swift 2、iOS 9.3、XCode 7