我在获取新的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英尺”。
.providedUnit
上的MeasurementFormatter
选项没有帮助-只是给我一个以米为单位的结果。我可以查询当前的语言环境并自己处理,但这正是
MeasurementFormatter
不必要的事情。有什么办法让它做我需要的吗? 最佳答案
您应该将格式程序的unitOptions
设置为naturalScale
:
let measurementFormatter = MeasurementFormatter()
measurementFormatter.unitOptions = .naturalScale
而且,仅当您希望任何语言环境中的每个用户都能看到特定语言环境中的值时,才应设置语言环境。