【发布时间】:2018-04-04 02:38:55
【问题描述】:
在 Xcode 更新后,我遇到了一个奇怪的问题。在我的应用程序中,当我从 API 获得响应时,我会手动解析它并将其映射到我的模型。在我的代码中有很多地方,我将 JSON 值转换为 Float,并使用如下所示的 null 合并:
randomVariable = jsonDict["jsonKey"] as? Float ?? 0
以前可以正常工作,但更新后总是默认为 0。为了确定原因,我尝试将其强制转换为 Float,如下所示
randomVariable = jsonDict["jsonKey"] as! Float
这导致了以下错误
无法将 NSNumber 桥接到 Float
经过进一步调查,我发现 Xcode 使用的是 Swift 3.3(之前使用的是 Swift 3.2)。我在 StackOverflow 上找到的解决方案围绕着将其转换为 NSNumber 而不是 Float。正如我上面提到的,我的应用程序中分布着类似的代码行。我想知道是否有办法解决这个问题。也许使用某种扩展?
【问题讨论】:
-
使用 Xcode 9.2 和 Swift 4.0 转换为
Float效果很好。 -
是的。这是 Xcode 9.3 和 Swift 3.3 的问题。
-
Xcode 9.3 使用 Swift 4.1。
-
我知道这一点。它还支持 swift 3.3。由于我的代码库在 swift 3 中,因此它默认为 swift 3.3。