无法将NSNumber桥接到Float Swift 3.3
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
。正如我上面提到的,我在我的应用程序中分布着相似的代码行。我想知道是否有解决此问题的方法。也许使用某种扩展?
回答:
如您所知,您可能需要先将其转换为NSNumber
。
像这样:
randomVariable = (jsonDict["jsonKey"] as? NSNumber)?.floatValue ?? 0
也许正则表达式替换将帮助您更新代码。
模式: jsonDict\[([^\]]*)\] as\? Float
用。。。来代替: (jsonDict[$1] as? NSNumber)?.floatValue
以上是 无法将NSNumber桥接到Float Swift 3.3 的全部内容, 来源链接: utcz.com/qa/404131.html