Xcode 6.1.1“快速返回”;可选(“1234.12美元”)“;带格式化程序
我只是在操场上试着让这东西工作,但它不想为我工作Xcode 6.1.1“快速返回”;可选(“1234.12美元”)“;带格式化程序,xcode,swift,formatting,currency,Xcode,Swift,Formatting,Currency,我只是在操场上试着让这东西工作,但它不想为我工作 var total = 1234.1234 var formatter = NSNumberFormatter() formatter.numberStyle = .CurrencyStyle println("\(formatter.stringFromNumber(total))") // Returns: "Optional("$1,234.12")" instead of just "$1,234.12" 我只想向用户显示格式化的数字,
var total = 1234.1234
var formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
println("\(formatter.stringFromNumber(total))")
// Returns: "Optional("$1,234.12")" instead of just "$1,234.12"
我只想向用户显示格式化的数字,但额外的可选位会一直显示。您必须打开可选位:
extension Double {
var formatted:String {
let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
return formatter.stringFromNumber(self) ?? "$0.00"
}
}
1234.1234.formatted // "$1,234.12"
因为您只是在操场上,并且确信可选项包含一个值, 您可以通过添加感叹号来使用强制展开:
print("\(formatter.stringFromNumber(total)!)")
请阅读NSNumberFormatter文档。
stringFromNumber()
的返回值是String?
。然后阅读文章,了解问号的含义,以及什么是可选的……至于为什么这是可选的:不知道为什么这个问题被否决。对我来说似乎是合理的。我不知道强制展开是否是个好主意,这可能会使应用程序崩溃nil
这将崩溃:让一个成员:Double?=一个月零!。格式化的
与我的代码无关。在nil的情况下,我使用nil合并操作符返回一个默认值。返回类型不是可选的。它是字符串类型。您正在强制打开可选的一个成员。它正在崩溃,因为它是零。您可以使用aNumber?。格式化的
My comment指的是以前的版本,该版本使用强制展开而不是零合并运算符,您的代码现在看起来很好:-)