无法将NSNumber桥接到Float Swift 3.3

发布于 2021-01-31 23:30:57

Xcode更新后,我遇到了一个奇怪的问题。在我的应用程序中,当我从API获得响应时,我会手动解析它并将其映射到我的模型。我的代码中有很多地方Float使用空合并将JSON值转换为如下所示:

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。正如我上面提到的,我在我的应用程序中分布着相似的代码行。我想知道是否有解决此问题的方法。也许使用某种扩展?

关注者
0
被浏览
192
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    如您所知,您可能需要先将其转换为NSNumber

    像这样:

    randomVariable = (jsonDict["jsonKey"] as? NSNumber)?.floatValue ?? 0
    

    也许正则表达式替换将帮助您更新代码。

    模式: jsonDict\[([^\]]*)\] as\? Float

    用。。。来代替: (jsonDict[$1] as? NSNumber)?.floatValue



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看