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
相关产品推荐
相关产品推荐

