SwiftUI使用MeasurementFormatter转英寸为英尺赋值错误求助
问题修复方案
你的代码错误根源是没有正确接收MeasurementFormatter生成的单位转换字符串,反而错误调用了formatter的description属性。MeasurementFormatter的string(from:)方法本身会返回带单位的格式化字符串,直接把这个返回值赋值给outputValue即可解决问题。
修改后的转换函数代码:
func convertToFeet() { let formatter = MeasurementFormatter() // 配置单位样式:.long显示完整单位名/ .short显示缩写/ .medium为中间样式 formatter.unitStyle = .short // 配置小数最大保留位数,避免结果过长 formatter.numberFormatter.maximumFractionDigits = 2 let distanceInInches = Measurement(value: Double(inputValue) ?? 0, unit: UnitLength.inches) let distanceInFeet = distanceInInches.converted(to: .feet) // 直接接收格式化结果赋值给输出变量 outputValue = formatter.string(from: distanceInFeet) }
额外优化建议:
- 你当前代码里声明的
massFormatter、value、length三个状态变量暂时没有用到,可以清理避免冗余 - 如果需要输出中文单位,只需要给formatter添加本地化配置:
搭配formatter.locale = Locale(identifier: "zh_CN").unitStyle = .long即可输出类似3.28 英尺的中文结果
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

