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

如何屏蔽 json 字段中的选定值 - Postgresql 9.3 和 PDI

如何在 XCode 9.3 上收集覆盖率数据?

Xcode 9.3 构建上传错误:将更改保存到 Apple 数据库时发生错误。 (1015)