在Swift中向MeasurementFormatter添加额外的unitOptions

时间:2016-11-11 23:57:35

标签: swift swift3 units-of-measurement

是否可以在swift中向MeasurementFormatter添加自定义unitOptions?我希望能够定义诸如.imperial和.metric

之类的内容
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")

print( formatter.unitOptions )

print( formatter.string(from: test))

formatter.unitOptions = .naturalScale
print( formatter.unitOptions )

print( formatter.string(from: test))

formatter.unitOptions = .providedUnit
print( formatter.unitOptions )

print( formatter.string(from: test))

输出:

UnitOptions(rawValue: 0)
10 J
UnitOptions(rawValue: 2)
2,39 cal
UnitOptions(rawValue: 1)
10 ft-lbs

1 个答案:

答案 0 :(得分:0)

您当然可以创建自己的类,该类可以使用imperialmetric单位选项,并使用符合您的预期和期望的区域设置调用测量格式化程序。它是最简单的方法,可以按照您的预期工作。使用en_US和en_AU按照我的预期工作,并且为了这个目的而想要它。

更多信息和指南:Introduction to MeasurementFormatter