NSMutableDictionary 将 NSString 值视为 NSNumber

NSMutableDictionary treats NSString value as NSNumber

我在 NSMutableDictionary 中有以下值 - 见图

我正在尝试到达 "a" 因此:

let a = dictionary.objectForKey("a") as! String

此时应用程序崩溃

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

“”内的其他数字被视为字符串,字符串外的数字也被毫无问题地转换为字符串。

谁能告诉我这是怎么回事?以及如何轻松获得这些值?

该值是 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
}

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

let a = d["a"]! as! NSNumber
let aString = "\(a)"