Swift 3 和 NumberFormatter (.currency) == ¤?
Swift 3 and NumberFormatter (.currency) == ¤?
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")
结果将是:
.40
...这正是我首先期望的。
请注意,这在 Playground 中有效:
问题似乎只发生在 devices/simulators 通过 Xcode 启动。
(我在两个不同的 macOS 上进行了测试——在我的工作场所和家里。)
有什么想法吗?
回答我自己的问题:重新创建项目。 :\
项目开始于 Xcode 7 + Swift 2,然后 "migrated" 到 Xcode 8 + Swift 3(手动)。一定是出了什么问题。我不知道是什么(我也不想知道)。
这不是一个大项目,所以我花了大约 40 分钟来移动文件。如果那是一个大项目,我现在会 f....d。
Xcode请
我有同样的问题,我用下面的代码解决了。希望有用
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!
}
这在模拟器中发生在我身上,事实证明这是我的方案设置中的错误。检查以下步骤:
- 点击 Set Active Scheme(直接点击模拟器类型的左侧,即 iPhone 7 Plus 等)
- 单击编辑方案...
- 点击进入左侧运行设置
- 将应用区域设置为所需区域
- 将应用程序语言设置为所需语言
- 再次尝试 运行 您的应用程序,您应该不会再显示“¤”符号,而应该反映正确的货币符号。
我认为您的设备语言设置为中文
这就是为什么 ¤ 符号显示为货币符号
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")
结果将是:
.40
...这正是我首先期望的。
请注意,这在 Playground 中有效:
问题似乎只发生在 devices/simulators 通过 Xcode 启动。
(我在两个不同的 macOS 上进行了测试——在我的工作场所和家里。)
有什么想法吗?
回答我自己的问题:重新创建项目。 :\
项目开始于 Xcode 7 + Swift 2,然后 "migrated" 到 Xcode 8 + Swift 3(手动)。一定是出了什么问题。我不知道是什么(我也不想知道)。
这不是一个大项目,所以我花了大约 40 分钟来移动文件。如果那是一个大项目,我现在会 f....d。
Xcode请
我有同样的问题,我用下面的代码解决了。希望有用
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!
}
这在模拟器中发生在我身上,事实证明这是我的方案设置中的错误。检查以下步骤:
- 点击 Set Active Scheme(直接点击模拟器类型的左侧,即 iPhone 7 Plus 等)
- 单击编辑方案...
- 点击进入左侧运行设置
- 将应用区域设置为所需区域
- 将应用程序语言设置为所需语言
- 再次尝试 运行 您的应用程序,您应该不会再显示“¤”符号,而应该反映正确的货币符号。
我认为您的设备语言设置为中文 这就是为什么 ¤ 符号显示为货币符号