在 Swift 中,当我创建自定义单位时,我只能定义一个符号。内置单元可以有短、中、长单元。如何为自定义单位设置其他单位样式?
extension UnitEnergy {
static let footPounds = UnitEnergy(symbol: "ft-lbs", converter: UnitConverterLinear(coefficient: 1))
}
var test = Measurement<UnitEnergy>( value: 10, unit: .footPounds)
var formatter = MeasurementFormatter()
formatter.locale = Locale(identifier: "es")
formatter.unitStyle = .short
print( formatter.string(from: test))
formatter.unitStyle = .medium
print( formatter.string(from: test))
formatter.unitStyle = .long
print( formatter.string(from: test))
formatter.unitOptions = .providedUnit
formatter.unitStyle = .short
print( formatter.string(from: test))
formatter.unitStyle = .medium
print( formatter.string(from: test))
formatter.unitStyle = .long
print( formatter.string(from: test))
Output:
10 J
10 J
10 julios
10 ft-lbs
10 ft-lbs
10 ft-lbs
简短的回答 - 你不能。 API 不提供任何允许您为三种单位样式提供不同符号的工具。
对于定制单位,MeasurementFormatter
定义自定义单位时仅使用一个符号。
请记住,对于三种不同的单位样式,需要的不仅仅是三种不同的可能符号。您实际上需要三种不同的字符串格式,因为有些单位可能有空格或其他标点符号,有些可能没有。有些可能出现在值之前,有些可能出现在值之后。
然后还有单位本地化的问题。基础框架为所有支持的语言提供了所有这些信息,因此MeasurementFormatter
可以显示所有预定义单位的所有受支持语言的所有三种单位样式。
由于 API 确实支持自定义单位,但不支持提供单位样式特定符号,因此我建议向 Apple 提交增强请求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)