swift 浮点到浮点的快速类型转换为nil

d6kp6zgx  于 2023-03-17  发布在  Swift
关注(0)|答案(1)|浏览(117)

我尝试将从JSON文件读取的一个数字转换为浮点数。该数字为0.35,但当我尝试使用as?转换为浮点数时,它给出nil。以下是代码:

let maxHeight = biome["Max Height"] as? Float
print(biome["Max Height"]) // Prints '0.35'
print(maxHeight) // Prints 'nil'

biome字典之前被转换为[String:Any],这是我能看到的唯一对它有影响的东西。我不知道为什么它返回nil,因为0.35应该是一个有效的浮点数。
我原以为它只会强制转换为浮点型,因为它是浮点型,但事实并非如此。

nqwrtyyt

nqwrtyyt1#

JSON解析浮点数将得到Double类型的值,而不是Float
使用:

let maxHeight = biome["Max Height"] as? Double

将给予期望值。如果你真的想要Float类型的值,你可以这样做:

if let val = biome["Max Height"] as? Double {
    let maxHeight = Float(val)
    // do stuff with maxHeight
}

您应该考虑更改解析JSON的方式,以便将其转换为具有所需类型的适当属性的正确struct,而不是最终得到[String: Any]类型的字典。

相关问题