Skip to content

The best way to deal with Measurements and Units in Swift.

License

Notifications You must be signed in to change notification settings

ken0nek/SwiftMeasurement

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ea71cad · Nov 8, 2021

History

33 Commits
Jul 1, 2021
Jul 1, 2021
Nov 8, 2021
Oct 26, 2019
Oct 26, 2019
Jan 1, 2017
Nov 8, 2021
Nov 8, 2021
Nov 8, 2021
Jul 1, 2021
Nov 8, 2021
Nov 8, 2021
Nov 8, 2021

Repository files navigation

SwiftMeasurement

Version License Platforms

The best way to deal with Measurements and Units in Swift.

Measurements and Units are newly introduced in iOS 10.

Usage

  • before
Measurement<UnitLength>(value: 3, unit: .kilometers) + Measurement<UnitLength>(value: 4, unit: .kilometers)
  • after
3.kilometers + 4.kilometers

SwiftMeasurement supports all units declared in Foundation framework.

  • UnitLength
  • UnitFuelEfficiency
  • UnitElectricResistance
  • UnitIlluminance
  • UnitDispersion
  • UnitElectricCharge
  • UnitVolume
  • UnitEnergy
  • UnitAngle
  • UnitDuration
  • UnitTemperature
  • UnitFrequency
  • UnitPower
  • UnitElectricCurrent
  • UnitElectricPotentialDifference
  • UnitAcceleration
  • UnitSpeed
  • UnitArea
  • UnitMass
  • UnitConcentrationMass
  • UnitPressure

Requirements

Current version is compatible with:

  • Swift 5.0+
  • masOS 10.12 or later
  • iOS 10.0 or later
  • watchOS 3.0 or later
  • tvOS 10.0 or later

Installation

SwiftMeasurement supports multiple methods for installing the library in a project.

Installation with CocoaPods

CocoaPods is a dependency manager for Objective-C, which automates and simplifies the process of using 3rd-party libraries like SwiftMeasurement in your projects. You can install it with the following command:

$ gem install cocoapods

Podfile

To integrate SwiftMeasurement into your Xcode project using CocoaPods, specify it in your Podfile:

pod 'SwiftMeasurement'

Then, run the following command:

$ pod install

Installation with Carthage

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.

You can install Carthage with Homebrew using the following command:

$ brew update
$ brew install carthage

To integrate SwiftMeasurement into your Xcode project using Carthage, specify it in your Cartfile:

github "ken0nek/SwiftMeasurement"

Run carthage to build the framework and drag the built SwiftMeasurement.framework into your Xcode project.

Future features

  • Describe relations between dimentions. [L, M, T, L/T, L/T^2, etc...]
// Speed * Duration -> Length

func * (lhs: Measurement<UnitSpeed>, rhs: Measurement<UnitDuration>) -> Measurement<UnitLength> {
    let v = lhs.converted(to: .baseUnit()).value * rhs.converted(to: .baseUnit()).value
        return Measurement<UnitLength>(value: v, unit: .baseUnit())

}

let duration = 10.hours // 10.0 hr
let speed = 5.kilometersPerHour // 5.0 km/h

(speed * duration).converted(to: .kilometers) // 50.00004 km