You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用MeasurementFormatter获取计量单位的单数名词形式?

iOS MeasurementFormatter 获取本地化单数单位的方法

可以实现,且完全复用系统自带的本地化单位资源,不需要自行维护多语言文案。

你之前直接对UnitLength实例调用格式化方法,系统默认按照复数场景处理,所以返回的是复数形式的单位。只要将单位和数值1绑定为Measurement实例再格式化,就能拿到正确的单数单位:

let measurementFormatter = MeasurementFormatter()
measurementFormatter.unitStyle = .long
// 可按需切换任意地区,自动适配对应语言的单复数规则
measurementFormatter.locale = Locale(identifier: "en_US")

// 获取单数单位:kilometer
let singleKmMeasurement = Measurement(value: 1, unit: UnitLength.kilometers)
let singularUnit = measurementFormatter.string(from: singleKmMeasurement)
    .replacingOccurrences(of: "1 ", with: "")

// 原本的复数单位获取逻辑依然可用:kilometers
let pluralKmMeasurement = Measurement(value: 2, unit: UnitLength.kilometers)
let pluralUnit = measurementFormatter.string(from: pluralKmMeasurement)
    .replacingOccurrences(of: "2 ", with: "")

旁白适配优化建议

如果是为了配速场景的VoiceOver朗读更自然,可以直接用MeasurementFormatter格式化完整的配速数值,系统会自动匹配正确的单位单复数和朗读逻辑,不需要手动拆分拼接单位:

// 示例:格式化5分钟每公里的配速
let paceMeasurement = Measurement(value: 5, unit: UnitSpeed.minutesPerKilometer)
measurementFormatter.unitOptions = .naturalScale
// 输出为 "5 minutes per kilometer",旁白可以直接正确朗读
let paceString = measurementFormatter.string(from: paceMeasurement)

内容的提问来源于stack exchange,提问作者phi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:57:03