<!--
{
  "availability" : [
    "iOS: 8.0.0 -",
    "iPadOS: 8.0.0 -",
    "macCatalyst: 13.0.0 -",
    "macOS: 13.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 2.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "HealthKit",
  "identifier" : "/documentation/HealthKit/HKUnit",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "HealthKit"
    ],
    "preciseIdentifier" : "c:objc(cs)HKUnit"
  },
  "title" : "HKUnit"
}
-->

# HKUnit

A class for managing the units of measure within HealthKit.

```
class HKUnit
```

## Overview

The unit class supports most standard SI units (meters, seconds, and grams), SI units with prefixes (centimeters, milliseconds and kilograms) and equivalent non-SI units (feet, minutes, and pounds). HealthKit also supports creating complex units by mathematically combining existing units.

You use units when working with HealthKit quantities. Quantities store both the value (as a `double` data type) and its corresponding unit. You can then request the value from the quantity in any compatible units. For more information on working with quantities, see [`HKQuantity`](/documentation/HealthKit/HKQuantity).

> Number formatters that use units (for example, <doc://com.apple.documentation/documentation/Foundation/EnergyFormatter>, <doc://com.apple.documentation/documentation/Foundation/LengthFormatter>, and <doc://com.apple.documentation/documentation/Foundation/MassFormatter>) use a custom enumeration to specify their units. For example, the <doc://com.apple.documentation/documentation/Foundation/EnergyFormatter> class uses the <doc://com.apple.documentation/documentation/Foundation/EnergyFormatter/Unit> enum. The ``doc://com.apple.healthkit/documentation/HealthKit/HKUnit`` class provides several methods to translate between the formatter enumerations and the HealthKit units. For more information, see Working with formatter units.

### Using Units

As with many HealthKit classes, don’t subclass the [`HKUnit`](/documentation/HealthKit/HKUnit) class.

The `HKUnit` class is implemented using a facade design pattern. It uses custom subclasses to represent instances of the different unit types. For example, the [`second()`](/documentation/HealthKit/HKUnit/second()) convenience method actually returns an instance of the private `HKTimeUnit` subclass.

Additionally, the unit class uses a single unit instance to represent all copies of the same unit in your app, wherever possible. For example, two calls to the [`second()`](/documentation/HealthKit/HKUnit/second()) method return the same unit object. This helps reduce the amount of memory used by unit instances.

## Topics

### Working with units

[`+  unitFromString:`](/documentation/HealthKit/HKUnit/init(from:)-9qont)

Returns the unit instance described by the provided string.

[`unitString`](/documentation/HealthKit/HKUnit/unitString)

A string representation of the unit object.

[`-  isNull`](/documentation/HealthKit/HKUnit/isNull())

Returns a Boolean value indicating whether the unit is null.

### Working with formatter units

[`+  energyFormatterUnitFromUnit:`](/documentation/HealthKit/HKUnit/energyFormatterUnit(from:))

Converts a HealthKit unit object into a corresponding energy formatter enumeration value.

[`+  unitFromEnergyFormatterUnit:`](/documentation/HealthKit/HKUnit/init(from:)-1j1pq)

Converts an energy formatter enumeration value into a corresponding HealthKit unit object.

[`+  lengthFormatterUnitFromUnit:`](/documentation/HealthKit/HKUnit/lengthFormatterUnit(from:))

Converts a HealthKit unit object into a corresponding length formatter enumeration value.

[`+  unitFromLengthFormatterUnit:`](/documentation/HealthKit/HKUnit/init(from:)-55e1u)

Converts a length formatter enumeration value into a corresponding HealthKit object.

[`+  massFormatterUnitFromUnit:`](/documentation/HealthKit/HKUnit/massFormatterUnit(from:))

Converts a HealthKit unit object into a corresponding mass formatter enumeration value.

[`+  unitFromMassFormatterUnit:`](/documentation/HealthKit/HKUnit/init(from:)-7h2li)

Converts a mass formatter enumeration value into a corresponding HealthKit unit object.

### Constructing mass units

[`+  gramUnit`](/documentation/HealthKit/HKUnit/gram())

Returns a HealthKit unit for measuring mass in grams.

[`+  gramUnitWithMetricPrefix:`](/documentation/HealthKit/HKUnit/gramUnit(with:))

Returns a HealthKit unit for measuring mass, using gram units with the provided prefix.

[`+  ounceUnit`](/documentation/HealthKit/HKUnit/ounce())

Returns a HealthKit unit for measuring mass in ounces.

[`+  poundUnit`](/documentation/HealthKit/HKUnit/pound())

Returns a HealthKit unit for measuring mass in pounds.

[`+  stoneUnit`](/documentation/HealthKit/HKUnit/stone())

Returns a HealthKit unit for measuring mass in stones.

[`+  moleUnitWithMolarMass:`](/documentation/HealthKit/HKUnit/moleUnit(withMolarMass:))

Returns a HealthKit unit for measuring mass in moles for a given molar mass.

[`+  moleUnitWithMetricPrefix:molarMass:`](/documentation/HealthKit/HKUnit/moleUnit(with:molarMass:))

Returns a HealthKit unit for measuring mass in moles, with the given prefix and molar mass.

[`HKUnitMolarMassBloodGlucose`](/documentation/HealthKit/HKUnitMolarMassBloodGlucose)

The molecular mass of blood glucose, typically used to create mole units for blood glucose.

### Constructing length units

[`+  meterUnit`](/documentation/HealthKit/HKUnit/meter())

Returns a HealthKit unit for measuring length in meters.

[`+  meterUnitWithMetricPrefix:`](/documentation/HealthKit/HKUnit/meterUnit(with:))

Returns a HealthKit unit for measuring length, using meter units with the provided prefix.

[`+  inchUnit`](/documentation/HealthKit/HKUnit/inch())

Returns a HealthKit unit for measuring length in inches.

[`+  footUnit`](/documentation/HealthKit/HKUnit/foot())

Returns a HealthKit unit for measuring length in feet.

[`+  yardUnit`](/documentation/HealthKit/HKUnit/yard())

Returns a HealthKit unit for measuring length in yards.

[`+  mileUnit`](/documentation/HealthKit/HKUnit/mile())

Returns a HealthKit unit for measuring length in miles.

### Constructing volume units

[`+  literUnit`](/documentation/HealthKit/HKUnit/liter())

Returns a HealthKit unit for measuring volume in liters.

[`+  literUnitWithMetricPrefix:`](/documentation/HealthKit/HKUnit/literUnit(with:))

Returns a HealthKit unit for measuring volume, using liter units with the provided prefix.

[`+  fluidOunceUSUnit`](/documentation/HealthKit/HKUnit/fluidOunceUS())

Returns a HealthKit unit for measuring volume in US fluid ounces.

[`+  fluidOunceImperialUnit`](/documentation/HealthKit/HKUnit/fluidOunceImperial())

Returns a HealthKit unit for measuring volume in imperial fluid ounces.

[`+  cupUSUnit`](/documentation/HealthKit/HKUnit/cupUS())

Returns a HealthKit unit for measuring volume in US cups.

[`+  cupImperialUnit`](/documentation/HealthKit/HKUnit/cupImperial())

Returns a HealthKit unit for measuring volume in imperial cups.

[`+  pintUSUnit`](/documentation/HealthKit/HKUnit/pintUS())

Returns a HealthKit unit for measuring volume in US pints.

[`+  pintImperialUnit`](/documentation/HealthKit/HKUnit/pintImperial())

Returns a HealthKit unit for measuring volume in imperial pints.

### Constructing pressure units

[`+  pascalUnit`](/documentation/HealthKit/HKUnit/pascal())

Returns a HealthKit unit for measuring pressure in pascals.

[`+  pascalUnitWithMetricPrefix:`](/documentation/HealthKit/HKUnit/pascalUnit(with:))

Returns a HealthKit unit for measuring pressure, using pascal units with the provided prefix.

[`+  millimeterOfMercuryUnit`](/documentation/HealthKit/HKUnit/millimeterOfMercury())

Returns a HealthKit unit for measuring pressure in millimeters of mercury.

[`+  inchesOfMercuryUnit`](/documentation/HealthKit/HKUnit/inchesOfMercury())

Returns a HealthKit unit for measuring pressure in inches of mercury.

[`+  centimeterOfWaterUnit`](/documentation/HealthKit/HKUnit/centimeterOfWater())

Returns a HealthKit unit for measuring pressure in centimeters of water.

[`+  atmosphereUnit`](/documentation/HealthKit/HKUnit/atmosphere())

Returns a HealthKit unit for measuring pressure in atmospheres.

[`+  decibelAWeightedSoundPressureLevelUnit`](/documentation/HealthKit/HKUnit/decibelAWeightedSoundPressureLevel())

Returns a HealthKit unit for measuring the difference between the local pressure and the ambient atmospheric pressure caused by sound.

### Constructing time units

[`+  secondUnit`](/documentation/HealthKit/HKUnit/second())

Returns a HealthKit unit for measuring time in seconds.

[`+  secondUnitWithMetricPrefix:`](/documentation/HealthKit/HKUnit/secondUnit(with:))

Returns a HealthKit unit for measuring time, using second units with the provided prefix.

[`+  minuteUnit`](/documentation/HealthKit/HKUnit/minute())

Returns a HealthKit unit for measuring time in minutes.

[`+  hourUnit`](/documentation/HealthKit/HKUnit/hour())

Returns a HealthKit unit for measuring time in hours.

[`+  dayUnit`](/documentation/HealthKit/HKUnit/day())

Returns a HealthKit unit for measuring time in days.

### Constructing energy units

[`+  jouleUnit`](/documentation/HealthKit/HKUnit/joule())

Returns a HealthKit unit for measuring energy in joules.

[`+  jouleUnitWithMetricPrefix:`](/documentation/HealthKit/HKUnit/jouleUnit(with:))

Returns a HealthKit unit for measuring energy, using joule units with the provided prefix.

[`+  kilocalorieUnit`](/documentation/HealthKit/HKUnit/kilocalorie())

Returns a HealthKit unit for measuring energy in kilocalories.

[`+  largeCalorieUnit`](/documentation/HealthKit/HKUnit/largeCalorie())

Returns a HealthKit unit for measuring energy in large calories (Cal).

[`+  smallCalorieUnit`](/documentation/HealthKit/HKUnit/smallCalorie())

Returns a HealthKit unit for measuring energy in small calories (cal).

[`+  calorieUnit`](/documentation/HealthKit/HKUnit/calorie())

Returns a HealthKit unit for measuring energy in calories.

### Constructing power units

[`+  wattUnit`](/documentation/HealthKit/HKUnit/watt())

Returns a HealthKit unit for measuring power in watts.

[`+  wattUnitWithMetricPrefix:`](/documentation/HealthKit/HKUnit/wattUnit(with:))

Returns a HealthKit unit for measuring power, using watt units with the provided prefix.

### Constructing temperature units

[`+  degreeCelsiusUnit`](/documentation/HealthKit/HKUnit/degreeCelsius())

Returns a HealthKit unit for measuring temperature in degrees Celsius.

[`+  degreeFahrenheitUnit`](/documentation/HealthKit/HKUnit/degreeFahrenheit())

Returns a HealthKit unit for measuring temperature in degrees Fahrenheit.

[`+  kelvinUnit`](/documentation/HealthKit/HKUnit/kelvin())

Returns a HealthKit unit for measuring temperature in kelvins.

### Constructing hearing sensitivity units

[`+  decibelHearingLevelUnit`](/documentation/HealthKit/HKUnit/decibelHearingLevel())

Returns a HealthKit unit for measuring the intensity of a sound.

### Constructing frequency units

[`+  hertzUnit`](/documentation/HealthKit/HKUnit/hertz())

Returns a HealthKit unit for measuring frequency in hertz.

[`+  hertzUnitWithMetricPrefix:`](/documentation/HealthKit/HKUnit/hertzUnit(with:))

Returns a HealthKit unit for measuring frequency in hertz with the provided prefix.

### Constructing vision units

[`+  diopterUnit`](/documentation/HealthKit/HKUnit/diopter())

Returns a HealthKit unit for measuring the optical power of a lens using diopter units.

[`+  prismDiopterUnit`](/documentation/HealthKit/HKUnit/prismDiopter())

Returns a HealthKit unit for measuring the prismatic deviation of a lens using prism diopter units.

### Constructing angle units

[`+  degreeAngleUnit`](/documentation/HealthKit/HKUnit/degreeAngle())

Returns a HealthKit unit for measuring angles using degrees.

[`+  radianAngleUnit`](/documentation/HealthKit/HKUnit/radianAngle())

Returns a HealthKit unit for measuring angles using radians.

[`+  radianAngleUnitWithMetricPrefix:`](/documentation/HealthKit/HKUnit/radianAngleUnit(with:))

Returns a HealthKit unit for measuring angles, using radian units with the provided prefix.

### Constructing electrical conductance units

[`+  siemenUnit`](/documentation/HealthKit/HKUnit/siemen())

Returns a HealthKit unit for measuring electrical conductance in siemens.

[`+  siemenUnitWithMetricPrefix:`](/documentation/HealthKit/HKUnit/siemenUnit(with:))

Returns a HealthKit unit for measuring electrical conductance, using siemen units with the provided prefix.

### Electrical potential difference

[`+  voltUnit`](/documentation/HealthKit/HKUnit/volt())

Returns a HealthKit unit for measuring the difference in electrical potential using volts.

[`+  voltUnitWithMetricPrefix:`](/documentation/HealthKit/HKUnit/voltUnit(with:))

Returns a HealthKit unit for measuring the electrical potential difference in volts with the provided prefix.

### Constructing pharmacology units

[`+  internationalUnit`](/documentation/HealthKit/HKUnit/internationalUnit())

Returns a HealthKit unit that measures the amount of a biologically active substance in international units (IU).

### Constructing scalar units

[`+  countUnit`](/documentation/HealthKit/HKUnit/count())

Returns a HealthKit unit for measuring counts.

[`+  percentUnit`](/documentation/HealthKit/HKUnit/percent())

Returns a HealthKit unit for measuring percentages.

### Performing unit math

[`-  unitMultipliedByUnit:`](/documentation/HealthKit/HKUnit/unitMultiplied(by:))

Creates a complex unit by multiplying the receiving unit with another unit.

[`-  unitDividedByUnit:`](/documentation/HealthKit/HKUnit/unitDivided(by:))

Creates a complex unit by dividing the receiving unit by another unit.

[`-  unitRaisedToPower:`](/documentation/HealthKit/HKUnit/unitRaised(toPower:))

Creates a complex unit by raising the unit to the given power.

[`-  reciprocalUnit`](/documentation/HealthKit/HKUnit/reciprocal())

Returns a complex unit representing the unit’s reciprocal.

### Constants

[`HKMetricPrefix`](/documentation/HealthKit/HKMetricPrefix)

Prefixes that can be added to SI units to change the order of magnitude.

## Relationships

### Conforms To

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`NSCoding`](/documentation/Foundation/NSCoding)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`NSSecureCoding`](/documentation/Foundation/NSSecureCoding)

[`Equatable`](/documentation/Swift/Equatable)

[`Hashable`](/documentation/Swift/Hashable)

[`Sendable`](/documentation/Swift/Sendable)

[`CVarArg`](/documentation/Swift/CVarArg)

[`NSCopying`](/documentation/Foundation/NSCopying)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)