使用MeasurementFormatter将仪表显示为英尺

我无法获得新的MeasurementFormatter类以适当的单位给出结果。 我希望以本地化的string(米或英尺取决于用户的区域设置)显示米的值。

我有这个:

 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应该不必要的。 有什么办法让它做我需要的吗?

您应该将formatter的unitOptions设置为unitOptions

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

如果您希望任何区域设置中的每个用户都能看到特定区域设置中的值,则只应设置区域设置。