swift - 函数返回可选 ("String")

标签 swift option-type

我有一个接受 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 然后解包,但 Optional 仍然显示。

最佳答案

它不返回 Optional("R$1.200,30"),它返回 "Optional("R$1.200,30")"。那里有细微的差别;注意 "。发生的事情是 formatter.stringFromNumber(valor) 返回 String?,您将其放入 String 使用 "\(...)"。相反,你应该返回 formatter.stringFromNumber(valor)!,在这里强制展开是可以的,因为你知道输入是一个数字。

关于swift - 函数返回可选 ("String"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30623748/

相关文章:

Swift:我可以拥有一个继承自协议(protocol)并对其进行约束的协议(protocol)吗?

iOS 应用程序在重启手机之前不会启动

ios - Swift Sprite Kit 相机运动

java - Optional#map 可以将输入参数的状态更改为 Function lambda 吗?

xcode - swift/Xcode6 : "found nil unwrapping optional" for my user's location

jquery - 无法使用类设置 div 的高度

swift - Swift 代码中的变量错误

java - 如何比较列表中的最小值?

Java 8 的 orElse 没有按预期工作

java - SonarQube 8.1.0 提示在访问该值之前调用 "Optional#isPresent()"