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)"
我在 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)"