2016-10-03 32 views
0

我無法使新的MeasurementFormatter類以適當的單位給出結果。我希望以本地化字符串(米或英尺)顯示的米數值,具體取決於用戶的區域設置。使用MeasurementFormatter以英尺顯示儀表

我有這樣的:

let meters : Double = 10 
let metersMeasurement = Measurement(value: meters, unit: UnitLength.meters) 

let measurementFormatter = MeasurementFormatter() 
measurementFormatter.locale = Locale(identifier: "en_US") 

let localizedString = measurementFormatter.string(from: metersMeasurement) 

這給了我 「0.006mi」 的字符串。我想,這是正確的,但將10米轉換爲英里有點荒謬。我想要的是「32.8英尺」。

MeasurementFormatter上的.providedUnit選項沒有幫助 - 這隻會給我一個以米爲單位的結果。

我可以查看當前的語言環境並自己處理,但這正是MeasurementFormatter應該不必要的那種類型。有什麼辦法讓它做我需要的嗎?

+1

在您的單元格式化程序中設置'naturalScale'選項https://developer.apple.com/reference/foundation/measurementformatter.unitoptions/1642065-naturalscale – Paulw11

+0

除了naturalScale,您需要將數字格式化程序的最大數字設置爲1'measurementFormatter .nu​​mberFormatter.maximumFractionDigits = 1' –

+0

@LeoDabus這將是可選的。 – rmaddy

回答

0

應設置格式的unitOptionsnaturalScale

let measurementFormatter = MeasurementFormatter() 
measurementFormatter.unitOptions = .naturalScale 

如果你想在任何語言環境中的每個用戶看到的特定區域的價值,你應該只設置語言環境。

+0

我在我的問題中包含了語言環境,以防某些人在他們的語言環境與我的語言環境不同時嘗試使用該代碼 - 我想強制美國單元進行演示。 –

+0

我也有這個問題的略有不同的版本,這個答案不適用。也許你可以[看看它](http://stackoverflow.com/questions/39858828/choosing-units-with-measurementformatter)? –

相關問題