我有这个函数接受Double值,将其转换为货币格式并返回格式为R $的字符串:1.200,30。
func convert_Value(valor: Double) ->String {
let formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle
formatter.locale = NSLocale(localeIdentifier: "pt_BR")
return ("\(formatter.stringFromNumber(valor))")
}
此函数没有声明任何可选变量,但是当我使用:
调用它时x = convert_Value(1200.30)
它返回:
Optional("R$1.200,30")
我无法弄清楚我需要做什么,因为它不是可选的我不能使用惊叹号打开可选项。 我试图将函数中的Double和String参数设置为Optional然后解包,但显示可选的静止图像。
答案 0 :(得分:6)
它不会返回Optional("R$1.200,30")
,而是返回"Optional("R$1.200,30")"
。那里有一个微妙的区别;注意"
。发生了什么formatter.stringFromNumber(valor)
返回String?
,您使用String
放入"\(...)"
。相反,你应该返回formatter.stringFromNumber(valor)!
,强制解包这里是可以的,因为你知道输入是一个数字。