8

NSFormatter 有很多专门的子类:

CNContactFormatter
CNPostalAddressFormatter
DRMSFFormatter
MKDistanceFormatter
NSByteCountFormatter
NSDateComponentsFormatter
NSDateFormatter
NSDateIntervalFormatter
NSEnergyFormatter
NSLengthFormatter
NSMassFormatter
NSNumberFormatter
NSPersonNameComponentsFormatter

我们大多数人都使用过NSNumberFormatterNSDateFormatter。它们有一个 locale 属性,可让您指定在从字符串转换为/从格式化程序支持的“本机”格式转换时使用的语言环境。其他一些人喜欢NSDateComponentsFormatter从他们的属性之一继承他们的语言环境(NSDateComponentsFormatter使用指定日历的语言环境,如果有的话。)

大多数其他人似乎没有任何方法来指定语言环境。我能想到的让它们以特定语言/区域设置生成输出的唯一方法是设置系统区域设置,获取输出/将字符串转换为数字格式,然后将其设置回来。

有没有办法为这样的格式化程序NSByteCountFormatter设置区域设置似乎不提供任何类型的区域设置?

编辑:

自从我写了这个问题以来,上面很多格式化程序的名称都发生了变化。大多数(全部?)都失去了他们的“NS”前缀。

4

1 回答 1

1

这似乎不太可能。如果您遍历实现(在 Hopper 中),则 NSByteCountFormatter 使用一个内部函数_NSLocalizedFileSizeDescription,该函数严重依赖-[NSBundle localizedStringForKey:value:table:](调用 Foundation 的包)。没有地方可以将语言环境传递给它。我会打开一个雷达,请求 NSByteCountFormatter 的 numberFormatter 属性以匹配 NSEnergyFormatter。

于 2022-01-05T14:16:54.457 回答