ios - 快速从 nsdictionary 获取 NSNumber

标签 ios iphone swift

我有一个 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/

相关文章:

iphone - 将 NSString 转换为二进制字符串

javascript - 没有 phonegap.js

swift - 对成员 'decode(_:forKey:)' swift4 的模糊引用

ios - 如何从 child 的 Firebase 获取数据?

ios - iOS 的 Firebase 云消息本地化争论?

iphone - NSnumberFormatter 在模拟器上工作但不在设备上工作

ios - 单击注释上的右侧详细信息披露按钮时,MonoTouch 会抛出 SIGSEGV

ios - SWIFT 在 Main.storyboard 中定义的 UIImageview 中旋转图像

arrays - Swift 中的普通数组与 'NSMutableArray' 相比?

Swift 字典的正确语法是什么?