2016-11-11 9 views
0

カスタムunitOptionsを迅速にMeasurementFormatterに追加できますか?私は、このような.imperialと.metricSwiftの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です。

関連する問題