【问题标题】:SwiftUI BaseUnit implementation custom measurementSwiftUI BaseUnit 实现自定义测量
【发布时间】:2021-11-28 16:15:48
【问题描述】:

为了计算管道中的压降,我使用带有流量参数的管道类。我想为流量实现自定义测量,但我得到一个“异常'NSInvalidArgumentException',原因:'***你必须在你的类中覆盖baseUnit ...来定义它的基本单位。'”错误。

我的流量单位维度代码是:

class UnitFlow: Dimension {
    static let cubicMeterPerSecond = UnitFlow(symbol: "m3/s", converter: UnitConverterLinear(coefficient: 1.0))
    static let cubicMeterPerMinute = UnitFlow(symbol: "m3/min", converter: UnitConverterLinear(coefficient: 60.0))
    static let cubicMeterPerHour = UnitFlow(symbol: "m3/h", converter: 
    //et cetera
          
    static let baseUnit = UnitFlow(symbol: "m3/s", converter: UnitConverterLinear(coefficient: 1.0))
}

出错的地方在这一行:

Text("\(pipe.flow.converted(to: UnitFlow.cubicMeterPerMinute).value)")

有什么想法吗?

【问题讨论】:

  • 你的代码的用例是什么?
  • 用例是管道流(即 pipe.flow2)从一个单位转换为另一个单位。

标签: swift swiftui dimension measurement


【解决方案1】:

正如错误提示,您需要覆盖baseUnit。但是,这是一种方法,而不是变量。

删除您当前的baseUnit,并将其替换为以下内容:

class UnitFlow: Dimension {
    /* ... */

    override class func baseUnit() -> Self {
        Self(symbol: "m3/s")
    }
}

【讨论】:

  • 谢谢!像魅力一样工作。
  • @etri 如果有用,别忘了接受答案!
猜你喜欢
  • 1970-01-01
  • 2019-11-20
  • 2020-10-09
  • 1970-01-01
  • 2021-03-28
  • 1970-01-01
  • 1970-01-01
  • 2023-01-10
相关资源
最近更新 更多