2016-11-11 22 views
0

是否有可能在swift中将自定义unitOptions添加到MeasurementFormatter?我想能够定义的,如.imperial和.metric在Swift中为MeasurementFormatter添加额外的unitOptions

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 
+0

即使您向枚举中添加更多选项,MeasurementFormatter也不会知道任何有关新值的信息。 – rmaddy

+0

那么是否有一种方法可以覆盖继承自MeasurementFormatter的可以处理增加值的类中的函数? – Andrew

回答

0

当然你可以创建自己的类,将采取imperialmetric单元选项和呼叫测量格式化程序的语言环境的行为与您的期望和愿望相同。这是最简单的方法,并按照您的预期工作。使用en_US和en_AU按我的预期工作,并希望它达到这个目的。

更多信息和指导在这里:Introduction to MeasurementFormatter