SwiftUI BaseUnit 实现自定义测量

SwiftUI BaseUnit implementation custom measurement

为了计算管道中的压降,我使用了带有流量参数的管道 class。我想为流量实施自定义测量,但我收到“异常 'NSInvalidArgumentException',原因:'*** 您必须覆盖 class 中的 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)")

有什么想法吗?

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

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

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

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