我在解析XML文件后创建了NSDictionary
。它将一些数值(例如,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中让我很难过。
答案 0 :(得分:1)
您需要通过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
来正确解析字符串并处理与区域设置相关的差异(例如,小数点分隔符为.
在美国,但在德国,
。)
答案 1 :(得分:0)
试试这个
var num:NSNumber = NSNumber(integer:(dictRef["referralID"] as! NSString).integerValue)
答案 2 :(得分:0)
let dictRef = NSDictionary(objects: ["6757677","1234567"], forKeys: ["VersionNumber", "referralID"])
if let versionNumber = dictRef.valueForKey("VersionNumber")?.integerValue {
let myNSNumber = NSNumber(integer: versionNumber)
println(myNSNumber) // 6757677
}