NSMutableDictionary将NSString值视为NSNumber

Dam*_*amo 2 nsnumber nsstring nsmutabledictionary ios swift

我在NSMutableDictionary中有以下值 - 请参阅图像

在此输入图像描述

我试图得到"a"因此:

let a = dictionary.objectForKey("a") as! String
Run Code Online (Sandbox Code Playgroud)

应用程序此时崩溃了

无法将'__NSCFNumber'(0x ...)类型的值转换为'NSString'(0x ...).

""内的其他数字被视为字符串,因为字符串之外的数字被转换为字符串而没有任何问题.

任何人都可以让我知道发生了什么事吗?以及如何轻松获得这些价值?

Aar*_*ger 20

价值是NSNumber,而不是NSString.你可以stringValue用来转换它:

if let a = d["a"] as? NSNumber {
    let aString = a.stringValue
    println(aString) // -1
} else {
    // either d doesn't have a value for the key "a", or d does but the value is not an NSNumber
}
Run Code Online (Sandbox Code Playgroud)

如果您确定它存在并且是NSNumber,则可以使用强制展开,强制转换和字符串插值:

let a = d["a"]! as! NSNumber
let aString = "\(a)"
Run Code Online (Sandbox Code Playgroud)

  • 我很确定这就是答案....不确定为什么你得到了投票 (2认同)