您不能将任何随机值转换为字符串。 如果无法将对象强制转换为字符串,则强制转换( as!
)将失败。
如果您知道它将始终包含NSNumber,那么您需要添加将NSNumber转换为字符串的代码。 这段代码应该有效:
if let result_number = single_result.valueForKey("Level") as? NSNumber
{
let result_string = "\(result_number)"
}
如果为“Level”键返回的对象可以是不同的对象类型,那么您将需要编写更灵活的代码来处理其他可能的类型。
Swift数组和字典通常是打字的,这使得这种东西更清晰。
我会说@ AirSpeedVelocity的回答(欧洲或非洲?)是最好的。 使用内置的toString
函数。 听起来它适用于任何Swift类型。
编辑:
在Swift 3中,答案似乎已经改变。 现在,您要使用String初始化程序
init(describing:)
或者,使用问题中的代码:
result = single_result.valueForKey("Level")
let resultString = String(describing: result)
请注意,通常您不需要valueForKey。 这是一个只适用于NSObjects的KVO方法。 假设single_result是一个Dictionary,您可能需要这种语法:
result = single_result["Level"]