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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:24:07