SwiftUI:为什么要将TextField的货币格式设置为欧元,并在左侧设置符号

hmtdttj4  于 2022-11-28  发布在  Swift
关注(0)|答案(1)|浏览(130)

我尝试使用具有用户区域设置货币格式的TextField
我试试这个

  1. struct MyView: View {
  2. @State private var amount = 0.0
  3. let currencyFormatter: NumberFormatter = {
  4. let formatter = NumberFormatter()
  5. formatter.usesGroupingSeparator = true
  6. formatter.numberStyle = .currency
  7. formatter.locale = Locale.current
  8. return formatter
  9. }()
  10. var body: some View {
  11. Form {
  12. // Test 1
  13. TextField("Amount", value: $amount,
  14. formatter: currencyFormatter)
  15. // Test 2
  16. TextField("Amount", value: $amount,
  17. format: .currency(code: Locale.current.currency?.identifier ?? ""))
  18. }
  19. }

两个TextField都会产生相同的格式错误:
金额:0欧元
预期值:
金额:0.00欧元
对于美元,它工作正常:
金额:0美元

yi0zb3m4

yi0zb3m41#

我只是通过在代码中添加以下代码找到了解决方案:

  1. Text("Transaction: \(Locale.current.identifier)" )

它呈现“en_FR”
因此,在我的“项目信息”,我只是有“法语本地化”,并知道两个文本字段(测试1和测试2)工作正常!

我也有Localizable字符串文件到我的项目。
请注意测试1和测试2之间的符号差异:在测试1中,用户必须输入€符号,而在测试2中,用户只需输入一个值。

相关问题