Swift 使用NumberFormatter避免非中断空间

Swift 使用NumberFormatter避免非中断空间,swift,number-formatting,nsnumberformatter,Swift,Number Formatting,Nsnumberformatter,我有一个NumberFormatter设置,如下所示: let currencyFormatter = NumberFormatter() currencyFormatter.usesGroupingSeparator = true currencyFormatter.groupingSeparator = "." currencyFormatter.numberStyle = .currency currencyFormatter.locale = Locale(ident

我有一个
NumberFormatter
设置,如下所示:

let currencyFormatter = NumberFormatter()
currencyFormatter.usesGroupingSeparator = true
currencyFormatter.groupingSeparator = "."
currencyFormatter.numberStyle = .currency
currencyFormatter.locale = Locale(identifier: "it_IT")
currencyFormatter.currencySymbol = ""
我需要根据作为输入的字符串值检索一个值

currencyFormatter.number(from: "1.000,00") // nil
currencyFormatter.number(from: "1.000,00\u{00a0}") // 1000
在第一个示例中,格式化程序返回
nil
,而在第二个示例中,我获得了正确的值(
\u{00a0}
是不间断的空格符号)


是否有一种方法可以使第一个示例在不添加空格符号的情况下工作?

如果没有货币符号,则此数字格式化程序的样式需要是
.decimal
,而不是
.currency
。这就足够了:

let currencyFormatter = NumberFormatter()
currencyFormatter.numberStyle = .decimal
currencyFormatter.locale = Locale(identifier: "it_IT")

毫无意义。你指的是两种不同的格式化程序,
currencyFormatter
formatter
@matt我写问题时的错误。事实上,如果你说
.currency
,格式化程序会对它将接受的内容非常挑剔(正如你已经发现的)。它期望一个空格后面跟着一个欧元符号,而其他什么都不行。我不知道为什么非破坏性空间会破坏这一点。但关键是,如果你说
.decimal
,你的两个输入都能工作。