【发布时间】:2017-01-20 08:17:03
【问题描述】:
Xcode 8.0 (8A218a) GM
目标:iOS 10 (Swift 3)
考虑以下代码:
let number = NSDecimalNumber(decimal: 22.4)
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .currency
numberFormatter.locale = Locale.current
let result = numberFormatter.string(from: number)
print(result!)
结果是:
¤22.40
(我不知道¤ 是什么意思。)
但如果我初始化语言环境,例如:
numberFormatter.locale = Locale(identifier: "en_US")
结果将是:
$22.40
...这是我最初所期望的。
请注意,这可以在 Playground 中使用:
这个问题似乎只发生在通过 Xcode 启动的设备/模拟器上。
(我在两种不同的 macOS 上进行了测试——在我的工作场所和家里。)
有什么想法吗?
【问题讨论】:
-
您当前的语言环境是什么?
-
Locale.current给你什么? -
另一个选项是不设置格式化程序的
locale属性。它将默认为您当前的语言环境,因此没有任何理由将其设置为当前语言环境。 -
我可以确认这在 Playground 中有效,但不能通过模拟器/设备上的 Xcode。我用这个信息更新了我的问题。
-
¤ 字符是 Unicode“货币符号”字符。如果语言环境没有任何信息要使用哪种货币或如何显示它,则该字符将用于显示货币。
标签: ios locale swift3 ios10 nsnumberformatter