在迁移Xcode版本时,我的现有项目出现运行时错误。有人可以帮忙吗?我的打字错误吗?
代码:
let x = d[ChildItem.KEY_LOOK] as! NSArray as Array
let y = d[ChildItem.KEY_COOR] as! NSArray as Array
let item = ChildItem(x as! [Float], y as! [Float])
错误:
线程5:致命错误:无法将NSNumber桥接到Float
我知道如何像在SO(Unable to bridge NSNumber to Float in JSON parsing)上那样将NSNumber转换为Float:
if let n = d.value(forKey: "probability") as? NSNumber {
let f = n.floatValue }
如何为NSNumber数组执行此操作?
每个d []键中都有类似以下的JSON字符串:
d [ChildItem.KEY_LOOK] = [465918.2,5681518.0,4462.3203]
答案 0 :(得分:0)
您需要使用NSNumber的floatValue属性,而不是直接进行强制转换。
答案 1 :(得分:-1)
假设您有从服务器调用中获得的一系列数字
d[ChildItem.KEY_LOOK] = [465918.2, 5681518.0,4462.3203] // from your example
您可以执行以下操作
//As from your example that can be directly convert to Array of Doubles like this
if let arrayOfDoubles = d[ChildItem.KEY_LOOK] as? [Double] {
debugPrint(arrayOfDoubles)
}
如果由于某种原因您希望这些人成为[NSNumber],那么您可以这样做
if let arrayOfNumbers = d[ChildItem.KEY_LOOK] as? [NSNumber] {
//to make this array of double
let doubleArray = arrayOfNumbers.map { $0.doubleValue }
//to make int
let intArray = arrayOfNumbers.map { $0.intValue }
... and so on
}