swift - 在 Swift 3 中设置中长测量符号

标签 swift swift3 units-of-measurement

在 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))

输出:

10 J
10 J
10 julios
10 ft-lbs
10 ft-lbs
10 ft-lbs

最佳答案

简答 - 你不能。 API 不提供任何允许您为三种单位样式提供不同符号的工具。

对于自定义单位,MeasurementFormatter 只有定义自定义单位时使用的一个符号。

请记住,对于三种不同的单位样式,需要的不仅仅是三种不同的可能符号。您实际上需要三种不同的字符串格式,因为有些单位可能有空格或其他标点符号,有些可能没有。有些可能出现在值之前,有些可能出现在值之后。

然后是单元本地化的问题。 Foundation 框架为所有受支持的语言提供了所有这些信息,因此 MeasurementFormatter 可以为所有预定义单位显示所有受支持语言的所有三种单位样式。

由于 API 确实支持自定义单位,但无法提供单位样式特定符号,因此我建议向 Apple 提交增强请求。

关于swift - 在 Swift 3 中设置中长测量符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40557269/

相关文章:

swift - 初始化 NSXMLDocument 时出现额外参数错误

ios - 在 SwiftUI 中切换 View 后 Firebase 图像为空

ios - UIImageJPEGRepresentation 已被实例方法 UIImage.jpegData(compressionQuality :)

ios - 除了代码之外,是否可以检查位置是否已启用?

sprite-kit - 无法转换 'SKScene' 类型的值

swift - 如何更改 TableView 中按钮的标题 (Swift)

ios - 在 UIButton 中添加右 View

python - 使用 pint 获取特定维度的所有单位

css - HTML 元素上的 rem 单位有意义吗?