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

SwiftUI中毫升转杯单位显示异常:如何将'c'改为'cups'?

解决SwiftUI中Measurement单位显示混淆的问题

要解决杯(cups)单位显示为'c'的问题,不要用硬编码拼接后缀的方式,应该使用MeasurementFormatter来定制单位的显示样式,这样既能正确显示完整单位名称,又能自动支持本地化。

具体实现步骤:

  • 创建MeasurementFormatter实例,设置unitStyle为.long(或.medium),这样会显示完整的单位名称而非缩写。
  • 用格式化器的string(from:)方法处理转换后的Measurement对象,替代原来的toString()。

示例代码:

let capacity = Measurement(value: Double(capacityArray[0]), unit: UnitVolume.milliliters)
let capacityInCups = capacity.converted(to: .cups)

// 初始化格式化器
let formatter = MeasurementFormatter()
formatter.unitStyle = .long // 显示完整单位名称,如"cups"
formatter.numberFormatter.maximumFractionDigits = 2 // 控制小数位数,按需调整

// 在Text中使用格式化后的字符串
Text("* Capacity: \(formatter.string(from: capacityInCups))")

效果说明:

运行后会输出:* Capacity: 0.85 cups,且当切换系统语言时,单位名称会自动适配对应语言的翻译(比如法语下会显示tasses),完全不需要手动处理本地化逻辑。

补充:

如果需要中等长度的单位显示(部分语言可能有不同的中等格式),可以把unitStyle设为.medium;若仍需缩写但要避免混淆,也可以自定义单位符号,但MeasurementFormatter的样式设置是更标准的解决方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 02:34:55