MKUnits 4.0.0

MKUnits 4.0.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2016年11月
SwiftSwift 版本3.0
SPM支持 SPM

Michal Konturek 维护。



MKUnits 4.0.0

MKUnits

MKUnits 是一个极为精确的 Swift 单位转换库。它提供了物理量的度量单位,并简化了它们的操作。

注意 对于 Objective-C 实现,请参考 MKUnits pod 2.2.1 或访问 存档分支

许可证

MKUnits 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。

安装

MKUnits 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod "MKUnits"

示例

让我们创建 1.5 千克 (kg)

let kilograms = 1.5.kilogram()

0.5 (kg) 转换为克 (g)

let grams = 500.gram()

和 10 磅 (lb)(相当于 4.5359237 (kg)

let pounds = 10.pound()

然后将所有这些加在一起,并减去 0.0001 (kg) 毫克 (mg)

let milligrams = 100.milligram()
var result = kilograms + grams + pounds - milligrams

结果数量是 6.5358237 (kg)

现在我们减去 0.5358237 (kg) 盎司 (oz),根据谷歌转换器,它相当于 18.900624805 (oz),但作为 MKUnits 非常精确,实际上是 18.900624805483390296005199558361177 (oz)

let ounces = 0.5358237.kilogram().converted(MassUnit.ounce)
result = result - ounces

结果数量大约是 6 (kg);确切地说是 6.00000000000000000000000000000000003 (kg)

现在我们想将结果转换为石 (st),因此

result = result.converted(MassUnit.stone)
// 0.94483873964811055873038869091017890993 st

由于结果过于精确,我们希望将其四舍五入。

let rounded = result.rounded(3)
// 0.945 st

支持的单位

目前 MKUnits 支持以下 组单位

  • 面积(基本单位:平方米)
  • 质量(基本单位:千克)
  • 长度(基本单位:米)
  • 时间(基本单位:秒)
  • 体积(基本单位:升)

您可以通过添加新的 组单位单位 来轻松扩展 MKUnits。

扩展 MKUnits

添加新的 单元组

要添加一个新的 单元组,只需创建一个继承自 Unit 的类,并遵循以下约定。

请确保在新的 单元组单元符号 是唯一的。

public final class NewUnit: Unit {

    public static var unitA: NewUnit {
        return NewUnit(
            name: "unit A",
            symbol: "uA",
            ratio: NSDecimalNumber.one() // as it is a base unit
        )
    }

    public static var unitB: NewUnit {
        return NewUnit(
            name: "unit B",
            symbol: "uB",
            ratio: NSDecimalNumber(mantissa: 2, exponent: 0, isNegative: false)
        )
    }
}

extension NSNumber {

    public func unitA() -> Quantity {
        return Quantity(amount: self, unit: NewUnit.unitA)
    }

    public func unitB() -> Quantity {
        return Quantity(amount: self, unit: NewUnit.unitB)
    }
}

向现有的 单元组 添加新的单元

要向现有的 单元组 添加更多单元,只需为该 单元组 创建一个分类。

不要子类化,因为单元只能与同一 单元组 的单元进行转换。

extension NewUnit {
    public static var unitC: NewUnit {
        return NewUnit(
            name: "unit C",
            symbol: "uC",
            ratio: NSDecimalNumber(mantissa: 4, exponent: 0, isNegative: false)
        )
    }
}

extension NSNumber {
    public func unitC() -> Quantity {
        return Quantity(amount: self, unit: NewUnit.unitC)
    }
}

贡献

  1. 进行Fork。
  2. 创建你的功能分支(git checkout -b new-feature)。
  3. 提交你的更改(git commit -am 'Added new-feature')。
  4. 推送到分支(git push origin new-feature)。
  5. 创建新的Pull Request。