我有一个 NSDictionary
,它是我在解析 XML 文件后创建的。它将一些数值(例如 6757677)存储为字符串。现在我想把它读入一个NSNumber
。我试过以下:
alert.versionNumber = dictRef["VersionNumber"] as! NSNumber
但我收到以下错误:
Could not cast value of type '__NSCFString' (0x1081c9c50) to 'NSNumber' (0x1076abb88).
我也试过以下但得到同样的错误:
let refID:NSNumber = dictRef["referralID"] as! NSNumber
alert.refID = refID.integerValue
这些转换在 Objective C 中很简单,但在 Swift 中却给我带来了困难。
最佳答案
您需要转换 NSString
进入 NSNumber
绕道long long
(最大的有符号整数类型)或 double
(最大的浮点类型)。例如:
let string : NSString = "42"
// Integer solution:
let intermediate = string.longLongValue
let number = NSNumber(longLong: intermediate)
// Floating point solution:
let intermediate2 = string.doubleValue
let number2 = NSNumber(double: intermediate2)
请注意,要将字符串转换为其 double 值,您可能需要使用 NSNumberFormatter
正确解析字符串并处理与区域设置相关的差异(例如,小数点分隔符在美国是 .
而在德国是 ,
)。
关于ios - 快速从 nsdictionary 获取 NSNumber,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32392143/