bac*_*h-f 8 locale nsnumberformatter ios swift3 ios10
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!)
Run Code Online (Sandbox Code Playgroud)
结果是:
¤22.40
Run Code Online (Sandbox Code Playgroud)
(我不知道是什么¤意思.)
但是,如果我初始化语言环境,例如:
numberFormatter.locale = Locale(identifier: "en_US")
Run Code Online (Sandbox Code Playgroud)
结果将是:
$22.40
Run Code Online (Sandbox Code Playgroud)
......这首先是我所期待的.
请注意,这适用于Playground:
问题似乎只发生在通过Xcode启动的设备/模拟器上.
(我在两个不同的macOS上测试 - 在我的工作场所和家中.)
关于发生了什么的任何想法?
Nam*_*ham 14
我有同样的问题,我通过下面的代码解决它.希望它有用
func formatCurrency(value: Double) -> String {
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.maximumFractionDigits = 2
formatter.locale = Locale(identifier: Locale.current.identifier)
let result = formatter.string(from: value as NSNumber)
return result!
}
Run Code Online (Sandbox Code Playgroud)
这在模拟器中发生在我身上,事实证明这是我的方案设置中的错误。检查以下步骤:
\n\n回答我自己的问题:重新创建项目。:\
该项目在 Xcode 7 + Swift 2 中启动,然后“迁移”到 Xcode 8 + Swift 3(手动)。一定是出了什么问题。我不知道什么(我也不想知道)。
这不是一个大项目,所以我花了大约 40 分钟来移动文件。如果那是一个大项目,我现在就已经死了。
请使用Xcode。