我目前正在为iOS开发一个应用程序,最近我更新到了iOS 17 betaXcode 15.0 beta.我正在try 使用NumberFormatterDouble格式化为货币字符串(在我的例子中,是美元$).以下是我的代码片段:

let formatter = NumberFormatter()
formatter.currencySymbol = Locale.current.currencySymbol
print(Locale.current.currency)
print(Locale.current.currencySymbol)
print(Locale.current.currency?.identifier)
print(Locale.current)
formatter.numberStyle = .currency

iOS 16上运行此命令时,我得到以下输出:

Optional(Foundation.Locale.Currency(_identifier: "USD", _normalizedIdentifier: "usd"))
Optional("$")
Optional("USD")
en_US (current)

然而,当在iOS 17 beta上运行相同的代码时,输出是不同的:

nil
Optional("¤")
nil
en_001 (fixed)

语言环境的货币和标识符属性似乎返回了nil,并且语言环境本身的标识也有所不同.

还有谁在iOS17测试版和Xcode15.0测试版中遇到过这个问题?这是测试版中的一个错误,还是应该使用区域设置进行货币格式设置的方式发生了变化?

推荐答案

我也遇到过这种情况,但解决方法很简单:启动模拟器的设置应用程序,然后导航到General>;"Language&;Region".您会注意到,默认情况下,Region被设置为"world",我假设结果是en_001语言代码.将区域更改为您想要使用的任何区域设置,您应该会得到一个更具体的ISO代码.

我不确定这是iOS 17的变化,还是只是模拟器测试版的变化,但可能值得注意的是,在不久的将来,世界可能会成为一个合法的区域.

祝好运!

Ios相关问答推荐

UIBezierPath包含:方法不检测到厚度大于1像素的线上的touch

如何在SwiftUI中以一定Angular 绘制直线(&A)

如何在本地iOS没有插件的情况下处理平台线程?

如何将模糊输入/模糊输出添加到SwiftUI中的非对称过渡?

如何在SwiftUI中顺时针和逆时针两个方向应用旋转效果?

检测touch 并忽略其他手势SWIFT SceneKit

在视图上执行手势会阻止相机操作

clang:错误:SDK 路径中不包含libarclite

swiftui动画如何实时确定不对称过渡

在 SwiftUI 中以编程方式插入内嵌图像

如何在用户点击的位置使用SceneKit渲染球体?

ITMS-90432:将应用上传到应用store 时出现问题

SwiftUI - TextField - 在焦点上清除 Double 类型的值,在取消 Select 时恢复

UIView 倒置旋转时的zoom 问题

一对多关系 Firebase 实时数据库(嵌入数百万条 comments )

FileHandle 不会在 iOS 中释放内存

iOS 是否支持使用独立 .xib 文件创建的嵌套自定义子视图?

iOS 11 navigationItem.titleView 宽度未设置

如何使用 AFNetworking 设置超时

错误 itms-90035 - Xcode