HealthKit开发教程之HealthKit的主要类型数据

在HealthKit中,我们将最常用到的数据称之为主要数据。主要数据基本上有三种:长度类型的数据、质量类型的数据、能量类型的数据。本节将主要对这三种主要数据进行讲解。

长度类型数据

长度单位是指丈量空间距离上的基本单元,是人类为了规范长度而制定的基本单位。而长度单位和数值构成的就是长度类型数据。根据单位的类型不同,该类型可以分为国际长度单位和英制长度单位两种。以下就是对这两种长度单位的介绍。

1.国际长度单位

国际长度单位是“米”为单位的。对于此单位的创建,需要使用到meterUnit()方法,其语法形式如下:

  • class func meterUnit() -> Self!

【示例2-8:HKUnit-meterUnit】下面显示用户一天内的行走路程。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  •  let unit = HKUnit.meterUnit()                                                                       //创建米单位
  • let distance=HKQuantity(unit: unit, doubleValue: 100)
  • println("一天内小明的行走路程为:\(distance)")
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。其中,米被写为m。

  • 一天内小明的行走路程为:100 m

注意:国际长度单位“米”可以带有前缀,如“千米”、“厘米等”。对于这些单位的创建需要使用到meterUnitWithMetricPrefix(_:)方法,其语法形式如下:

  • class func meterUnitWithMetricPrefix(_ prefix: HKMetricPrefix) -> Self!

其中,prefix用来指定一个有效的度量前缀值,它是一个HKMetricPrefix枚举类型的数据。其语法形式如下:

  • enum HKMetricPrefix : Int {
  • case None
  • case Pico                                                                    //皮米
  • case Nano                                                                           //纳米
  • case Micro                                                                           //微米
  • case Milli                                                                    //毫米
  • case Centi                                                                  //厘米
  • case Deci                                                                   //分米
  • case Deca                                                                  //十米
  • case Hecto                                                                 //百米
  • case Kilo                                                                     //千米
  • case Mega                                                                           //106
  • case Giga                                                                   //109
  • case Tera                                                                   //1012
  • }

其中,成员说明如表2-1所示。

表2-1  HKMetricPrefix成员说明

注意:这里的基本单位是国际单位米(m)。

【示例2-9:HKUnit-meterUnitWithMetricPrefix】下面显示用户一天内的行走路程。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  • let unit = HKUnit.meterUnitWithMetricPrefix(HKMetricPrefix.Kilo)
  • let distance=HKQuantity(unit: unit, doubleValue: 100)
  • println("一天内小明的行走路程为:\(distance)")
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。其中,千米被写成km。

  • 一天内小明的行走路程为:100 km

2.英制长度单位

英制单位是一种源自英国的度量衡单位制。用来度量长度的单位就是英制长度单位。在英制长度单位中为了与国际单位区别,多在单位前加一“英”字,或冠以口字旁称之,如:英里(英哩)、英尺(英呎)、英寸(英吋)等。以下将讲解常用的3个英制长度单位。

(1)英寸

一般1英寸等于2.54厘米。创建以“英寸”为单位的对象,一般需要使用到inchUnit()方法,其语法形式如下:

  • class func inchUnit() -> Self!

【示例2-10:HKUnit-inchUnit】下面显示用户一天内的行走路程,此时单位需要使用“英寸”。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  •   let unit = HKUnit.inchUnit()                                                                                   //创建英寸单位
  • let distance=HKQuantity(unit: unit, doubleValue: 1000)
  • println("一天内小明的行走路程为:\(distance)")
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。其中,英寸被简写为in。

  • 一天内小明的行走路程为:1000 in

(2)英尺

在英制长度单位中,12英寸等于1英尺。如果要创建以“英尺”为单位的对象,一般需要使用到footUnit()方法,其语法形式如下:

  • class func footUnit() -> Self!

【示例2-11:HKUnit-footUnit】下面显示用户一天内的行走路程,此时单位需要使用“英尺”。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  •  let unit = HKUnit.footUnit()                                                                                    //创建长度单位
  • let distance=HKQuantity(unit: unit, doubleValue: 500)
  • println("一天内小明的行走路程为:\(distance)")
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。其中,英尺被简写为ft。

  • 一天内小明的行走路程为:500 ft

(3)英里

英里也是英制长度单位中最常使用的单位。如果要创建以“英里”为单位的对象,一般需要使用到mileUnit()方法,其语法形式如下:

  • class func mileUnit() -> Self!

【示例2-12:HKUnit-mileUnit】下面显示大巴车一天内行驶的路程,此时单位需要使用“英里”。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  •  let unit = HKUnit.mileUnit()                                                                                   //创建英里单位
  • let distance=HKQuantity(unit: unit, doubleValue: 5000)
  • println("一天内大巴车的行驶路程为:\(distance)")
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。其中,英里被简写为mi。

  • 一天内大巴车的行驶路程为:5000 mi

3.长度单位转换

长度单位是可以在单位对象和长度单位值之间进行转换的。当开发者写了一个字符串来描述单位,但是又不知道这个字符串代表什么时,就可以将单位对象转换为长度单位值进行查看。当开发者想写一个以“码”或者是“英里”为单位的对象时,但只知道到单位值而不知道对应的字符串时,可以将长度单位值转换为单位对象就可以了。以下将详细讲解单位对象和长度单位值之间的转换。

(1)单位对象转换为长度单位值

有时我们需要将一个数据中的单位对象转为长度单位值。此时需要使用lengthFormatterUnitFromUnit(_:)方法实现。其语法形式如下:

  • class func lengthFormatterUnitFromUnit(_ unit: HKUnit!) -> NSLengthFormatterUnit

其中,unit用来指定一个单位对象。该方法的返回值类型为NSLengthFormatterUnit枚举类型,其语法形式如下:

  • enum NSLengthFormatterUnit : Int {
  • case Millimeter
  • case Centimeter
  • case Meter
  • case Kilometer
  • case Inch
  • case Foot
  • case Yard
  • case Mile
  • }

其中成员的含义如表2-2所示。

表2-2  NSLengthFormatterUnit成员说明

【示例2-13:HKUnit-lengthFormatterUnitFromUnit】将单位对象的对应长度单位值进行显示。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  • var myunit=HKUnit(fromString: "mi")
  • var myUnitValue=HKUnit.lengthFormatterUnitFromUnit(myunit).rawValue             //获取相应的值
  •         //判断
  • if let b=NSLengthFormatterUnit(rawValue: myUnitValue){
  • switch b{
  • case .Millimeter:
  • println("Millimeter")
  • case .Centimeter:
  • println("Centimeter")
  • case .Meter:
  • println("Meter")
  • case .Kilometer:
  • println("Kilometer")
  • case .Inch:
  • println("Inch")
  • case .Foot:
  • println("Foot")
  • case .Yard:
  • println("Yard")
  • case .Mile:
  • println("Mile")
  • default:
  • println("其它")
  • }
  • }
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。

  • Mile

(2)长度单位值转为单位对象

在HealthKit中不仅可以将单位对象转换为相应的长度单位值,而且可以将长度单位值转换为单位对象。此时需要使用到init(fromLengthFormatterUnit:)方法,其语法形式如下:

  • convenience init!(fromLengthFormatterUnit lengthFormatterUnit: NSLengthFormatterUnit)

其中,lengthFormatterUnit用来指定一个有效的长度单位值。长度单位值的指定可以参考表2-2。

【示例2-14:HKUnit-init(fromLengthFormatterUnit/)】将长度单位值转换为单位对象。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  • var myLengthFormatterUnit=NSLengthFormatterUnit.Kilometer
  •  var myunit=HKUnit(fromLengthFormatterUnit: myLengthFormatterUnit)
  • println(myunit)
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。

  • km

2.2.2  质量类型的数据

质量单位用于计量质量的标准。质量单位和值构成的就是质量类型数据。质量单位可以分为国际质量单位和英制质量单位这两种。以下就是对这两种质量单位的介绍。

1.国际质量单位

国际质量单位有克和摩尔两种,以下就是对这两种质量单位的介绍。

(1)克

克作为质量单位,其符号为g。如果想要创建一个以“克”为单位的单位对象,需要使用到gramUnit()方法,其语法形式如下:

  • class func gramUnit() -> Self!

【示例2-15:HKUnit-gramUnit】下面显示用户的体重,以“克”为单位。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  • var myUnit=HKUnit.gramUnit()                                      //创建以“克”为单位的单位对象
  • var myWeight=HKQuantity(unit: myUnit, doubleValue: 50000)
  • println("小红的体重为:\(myWeight)")
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。

  • 小红的体重为:50000 g

注意:开发者也可以像国际长度单位“米”一样,为“克”添加前缀,此时需要使用到gramUnitWithMetricPrefix(_:)方法,其语法形式如下:

  • class func gramUnitWithMetricPrefix(_ prefix: HKMetricPrefix) -> Self!

其中,prefix用来指定一个有效的度量前缀值,这些值就是表2-1中的内容。

【示例2-16:HKUnit-gramUnitWithMetricPrefix】下面显示用户的体重,以“千克”为单位。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  • var myUnit=HKUnit.gramUnitWithMetricPrefix(HKMetricPrefix.Kilo)
  • var myWeight=HKQuantity(unit: myUnit, doubleValue: 50)
  • println("小红的体重为:\(myWeight)")
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。其中,千克被简写为kg。

  • 小红的体重为:50 kg

(2)摩尔

科学上把含有6.02×1023个微粒的集合体作为一个单位,称为摩尔(mole),简称摩,旧称克分子、克原子。它是国际单位制7个基本单位之一,表示物质的量,符号为mol。创建一个以“摩尔”为单位的对象,需要使用到moleUnitWithMolarMass(_:)方法,其语法形式如下:

  • class func moleUnitWithMolarMass(_ gramsPerMole: Double) -> Self!

其中,参数gramsPerMole是一个双精度类型,用来指定被称过项目的摩尔质量(以g/mol为单位)。

【示例2-17:HKUnit-moleUnitWithMolarMass】下面显示Fe即铁的质量。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  • var myUnit=HKUnit.moleUnitWithMolarMass(56)
  • println("铁的质量为\(myUnit)")
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。其中,摩尔被简写为mol。

  • 铁的质量为mol<56>

注意:“摩尔”也是可以有前缀的。为“摩尔”添加前缀的方法是moleUnitWithMetricPrefix(_:molarMass:)方法,其语法形式如下:

  • class func moleUnitWithMetricPrefix(_ prefix: HKMetricPrefix,
  • molarMass gramsPerMole: Double) -> Self!

其中,prefix用来指定一个有效的度量前缀值,这些值就是表2-1中的内容。参数gramsPerMole:是一个双精度类型,用来指定被称过项目的摩尔质量(以g/mol为单位)。

【示例2-18:HKUnit-moleUnitWithMetricPrefix】下面显示Fe即铁的质量。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  • var myUnit=HKUnit.moleUnitWithMetricPrefix(HKMetricPrefix.Centi, molarMass: 5600)
  • println("铁的质量为\(myUnit)")
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。

  • 铁的质量为cmol<5600>

2.英制质量单位

(1)盎司

“盎司”是英制的计量单位。它是国际上通用的黄金计量单位。如果想要创建一个以“盎司”为单位的对象,一般需要使用到ounceUnit()方法,其语法形式如下:

  • class func ounceUnit() -> Self!

【示例2-19:HKUnit-ounceUnit】下面显示黄金的质量,以“盎司”为单位。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  • var goldUnit=HKUnit.ounceUnit()
  • var goleWeight=HKQuantity(unit: goldUnit, doubleValue: 50)
  • println("黄金的质量为\(goleWeight)")
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。其中,盎司被简写为oz。

  • 黄金的质量为50 oz

(2)磅

磅是英美制重量单位,一磅合0.45359237公斤。磅(英语:pound)是英国与美国所使用的英制质量单位,简写是lb。如果想要创建一个以“磅”为单位的对象,一般需要使用到poundUnit()方法,其语法形式如下:

  • class func poundUnit() -> Self!

【示例2-20:HKUnit-poundUnit】下面显示用户的体重,以“磅”为单位。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  • var myUnit=HKUnit.poundUnit()
  • var myWeight=HKQuantity(unit: myUnit, doubleValue: 100)
  • println("小红的体重为:\(myWeight)")
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。

  • 小红的体重为:100 lb

(3)英石

英石(英文为Stone,缩写st)是不列颠群岛使用的英制质量单位之一,亦被英联邦国家普遍采用。如果想要创建一个以“英石”为单位的对象,一般需要使用到stoneUnit()方法,其语法形式如下:

  • class func stoneUnit() -> Self!

【示例2-21:HKUnit-stoneUnit】下面显示用户的体重,以“英石”为单位。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  •   var myUnit=HKUnit.stoneUnit()
  • var myWeight=HKQuantity(unit: myUnit, doubleValue:10)
  • println("小红的体重为:\(myWeight)")
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。

  • 小红的体重为:10 st

3.质量单位转换

质量单位和长度单位类似,可以在单位对象和质量单位值之间进行转换。以下将讲解它们之间的转换。

(1)单位对象转换为质量单位值

将单位对象转换为质量单位值需要使用到massFormatterUnitFromUnit(_:)方法,其语法形式如下:

  • class func massFormatterUnitFromUnit(_ unit: HKUnit!) -> NSMassFormatterUnit

其中,参数unit用来指定一个单位对象。该方法的返回值类型为NSMassFormatterUnit枚举类型,其语法形式如下:

  • enum NSMassFormatterUnit : Int {
  • case Gram
  • case Kilogram
  • case Ounce
  • case Pound
  • case Stone
  • }

其中,成员说明如表2-3所示。

表2-3  NSMassFormatterUnit成员说明

 

【示例2-22:HKUnit-massFormatterUnitFromUnit】下面将单位对象的对应质量单位值进行显示。代码如下

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  • var myunit=HKUnit(fromString: "kg")
  • var myUnitValue=HKUnit.massFormatterUnitFromUnit(myunit).rawValue     //获取对应的值
  • //判断
  • if let myvalue=NSMassFormatterUnit(rawValue: myUnitValue){
  • switch myvalue{
  • case .Gram:
  • println("Gram")
  • case .Kilogram:
  • println("Kilogram")
  • case .Ounce:
  • println("Ounce")
  • case .Pound:
  • println("Pound")
  • case .Stone:
  • println("Stone")
  • default:
  • println("其它")
  • }
  • }
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。

  • Kilogram

(2)质量单位值转为单位对象

质量单位值转为单位对象需要使用到init(fromMassFormatterUnit:)方法,其语法形式如下:

  • convenience init!(fromMassFormatterUnit massFormatterUnit: NSMassFormatterUnit)

其中,massFormatterUnit用来指定一个有效的质量单位值。质量单位值的指定可以参考表2-3。

【示例2-23:HKUnit-init(fromMassFormatterUnit/)】下面将质量单位值转换为单位对象进行显示。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  • var myMassFormatterUnit=NSMassFormatterUnit.Ounce
  • var myunit=HKUnit(fromMassFormatterUnit: myMassFormatterUnit)                      //转换
  • println(myunit)
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。

  • oz

2.2.3  能量类型的数据

能量单位是物质运动的一般量度。物质运动有多种形式,表现各异,但可互相转换,表明这些运动有共性,也有内在的统一的量度,即能量单位。能量单位和值就构成了数据。能量单位只有国际能量单位。本小节将讲解国际能量单位以及能量单位的转换。

1.国际能量单位

国际能量单位有3种分别为:焦耳、卡路里、千卡。以下就是对这3种国际能量单位的介绍。

(1)焦耳

焦耳简称“焦”,是为了纪念英国著名物理学家詹姆斯·普雷斯科特·焦耳而创立的。如果要创建一个以“焦耳”为单位的单位对象,需要使用到jouleUnit()方法,其语法形式如下:

  • class func jouleUnit() -> Self!

【示例2-24:HKUnit-jouleUnit】下面显示一小时所消耗的能量,以“焦耳”为单位。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  • var myUnit=HKUnit.jouleUnit()
  • var myenergy=HKQuantity(unit: myUnit, doubleValue: 1000)
  • println("运动1小时所消耗\(myenergy)的能量")
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。其中,焦耳被简写为J。

  • 运动1小时所消耗1000 J的能量

注意:“焦耳”也是可以添加前缀的,此时需要使用到jouleUnitWithMetricPrefix(_:)方法,其语法形式如下:

  • class func jouleUnitWithMetricPrefix(_ prefix: HKMetricPrefix) -> Self!

其中,prefix用来指定一个有效的度量前缀值,这些值就是表2-1中的内容。

【示例2-25:HKUnit-jouleUnitWithMetricPrefix】下面显示一小时所消耗的能量,以“千焦”为单位。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  •  var myUnit=HKUnit.jouleUnitWithMetricPrefix(HKMetricPrefix.Kilo)                         //创建质量单位
  • var myenergy=HKQuantity(unit: myUnit, doubleValue: 1)
  • println("运动1小时所消耗\(myenergy)的能量")
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。

  • 运动1小时所消耗1 kJ的能量

(2)卡路里

卡路里简称卡,缩写为cal,由英文Calorie音译而来,其定义为在1个大气压下,将1克水提升1摄氏度所需要的热量;卡路里(calorie)是能量单位,现在仍被广泛使用在营养计量和健身手册上。如果要创建一个以“卡路里”为单位的单位对象,需要使用到calorieUnit()方法,其语法形式如下:

  • class func calorieUnit() -> Self!

【示例2-26:HKUnit-calorieUnit】下面显示一小时所消耗的能量,以“卡路里”为单位。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  • var myUnit=HKUnit.calorieUnit()
  • var myenergy=HKQuantity(unit: myUnit, doubleValue: 500)
  • println("运动1小时所消耗\(myenergy)的能量")
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。

  • 运动1小时所消耗500 cal的能量

(3)千卡

千卡也叫做大卡,1千卡等于1000卡路里。如果要创建一个以“千卡”为单位的单位对象,需要使用到kilocalorieUnit()方法,其语法形式如下:

  • class func kilocalorieUnit() -> Self!

【示例2-27:HKUnit-kilocalorieUnit】下面显示一小时所消耗的能量,以“千卡”为单位。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  •   var myUnit=HKUnit.kilocalorieUnit()
  • var myenergy=HKQuantity(unit: myUnit, doubleValue: 10)
  • println("运动1小时所消耗\(myenergy)的能量")
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。其中,千卡被简写为kcal。

  • 运动1小时所消耗10 kcal的能量

2.能量单位的转换

能量单位也可以在单位对象和能量单位值之间进行转换。以下将讲解它们之间的转换。

(1)单位对象转换为能量单位值

将单位对象转换为能量单位值需要使用到energyFormatterUnitFromUnit(_:)方法,其语法形式如下:

  • class func energyFormatterUnitFromUnit(_ unit: HKUnit!) -> NSEnergyFormatterUnit

其中,unit用来指定一个单位对象。该方法的返回值类型为NSEnergyFormatterUnit枚举类型,其语法形式如下:

  • enum NSEnergyFormatterUnit : Int {
  • case Joule
  • case Kilojoule
  • case Calorie
  • case Kilocalorie
  • }

其中,成员说明如表2-4所示。

表2-4  NSEnergyFormatterUnit成员对象

【示例2-28:HKUnit-energyFormatterUnitFromUnit】将单位对象的对应能量单位值进行显示。代码如下

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  • var myunit=HKUnit(fromString: "kJ")
  •   var myUnitValue=HKUnit.energyFormatterUnitFromUnit(myunit).rawValue            //获取相应的值
  • //判断
  • if let myvalue=NSEnergyFormatterUnit(rawValue: myUnitValue){
  • switch myvalue{
  • case .Joule:
  • println("Joule")
  • case .Kilojoule:
  • println("Kilojoule")
  • case .Calorie:
  • println("Calorie")
  • case .Kilocalorie:
  • println("Kilocalorie")
  • default:
  • println("其它")
  • }
  • }
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。

  • Kilojoule

(2)能量单位值转为单位对象

将能量单位值转换为单位对象需要使用到init(fromEnergyFormatterUnit:)方法,其语法形式如下:

  • convenience init!(fromEnergyFormatterUnit energyFormatterUnit: NSEnergyFormatterUnit)

其中,massFormatterUnit用来指定一个有效的质量单位值。质量单位值的指定可以参考表2-4。

【示例2-29:HKUnit-init(fromEnergyFormatterUnit/)】将能量单位值转为单位对象。代码如下:

  • import UIKit
  • import HealthKit
  • class ViewController: UIViewController {
  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  • var myEnergyFormatterUnit=NSEnergyFormatterUnit.Calorie
  •  var myunit=HKUnit(fromEnergyFormatterUnit: myEnergyFormatterUnit)
  • println(myunit)
  • }
  • ……
  • }

此时运行程序,会看到如下的效果。

  • cal
本文选自:HealthKit开发快速入门教程大学霸资料,转载请注明出处,尊重技术尊重IT人!

HealthKit开发教程之HealthKit的主要类型数据的更多相关文章

  1. HealthKit开发教程之HealthKit的辅助数据

    HealthKit开发教程之HealthKit的辅助数据 在HealthKit中除了主要数据之外,还有6个辅助数据分别为:体积类型数据.压力类型数据.时间类型数据.温度类型数据.标量类型数据和电导率类 ...

  2. HealthKit开发教程之HealthKit的复合数据

    HealthKit开发教程之HealthKit的复合数据 复合数据就是复合单位和值构成的数据.所谓复合单位就是由单位进行乘法.除法等得到的单位,如m/s.lb·ft等就是复合单位.本节将针对这些复合数 ...

  3. HealthKit开发快速入门教程之HealthKit数据的操作

    HealthKit开发快速入门教程之HealthKit数据的操作 数据的表示 在HealthKit中,数据是最核心的元素.通过分析数据,人们可以看到相关的健康信息.例如,通过统计步数数据,人们可以知道 ...

  4. HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID

    HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID HealthKit开发准备工作 在开发一款HealthKit应用程序时,首先需要讲解HealthKit中有哪些类,在i ...

  5. HealthKit开发快速入门教程之HealthKit开发概述简介

    HealthKit开发快速入门教程之HealthKit开发概述简介 2014年6月2日召开的年度开发者大会上,苹果发布了一款新的移动应用平台,可以收集和分析用户的健康数据.该移动应用平台被命名为“He ...

  6. iOS 9应用开发教程之ios9中实现按钮的响应

    iOS 9应用开发教程之ios9中实现按钮的响应 IOS9实现按钮的响应 按钮主要是实现用户交互的,即实现响应.按钮实现响应的方式可以根据添加按钮的不同分为两种:一种是编辑界面添加按钮实现的响应:另一 ...

  7. iOS 9应用开发教程之ios9的视图

    iOS 9应用开发教程之ios9的视图 了解IOS9的视图 在iPhone或者iPad中,用户看到的和摸到的都是视图.视图是用户界面的重要组成元素.本节将主要讲解ios9视图的添加.删除以及位置和大小 ...

  8. iOS 9应用开发教程之ios9中实现button的响应

    iOS 9应用开发教程之ios9中实现button的响应 IOS9实现button的响应 button主要是实现用户交互的.即实现响应.button实现响应的方式能够依据加入button的不同分为两种 ...

  9. Xamarin Anroid开发教程之Anroid开发工具及应用介绍

    Xamarin Anroid开发教程之Anroid开发工具及应用介绍 Xamarin开发Anroid应用介绍 如今智能手机已经盛行了好几年,而针对这些智能手机的软件开发也变得异常火热.但是在Andro ...

随机推荐

  1. 大数据下Limit使用(MySQL)

    对于一直用Oracle的我,今天可是非常诧异,MySQL中同一个函数在不同数量级上的性能居然差距如此之大. 先看表ibmng(id,title,info)  唯一  id key 索引title 先看 ...

  2. 域名在微信朋友圈内分享需要ICP备案 杜绝不良信息传播

    就在刚刚,腾讯微信团队发布公告表示域名在朋友圈内分享需要ICP备案,杜绝打击不良互联网信息的传播.公告称根据互联网管理相关规定,即日起在微信朋友圈内分享的域名,请在2014年12月31日前完成ICP备 ...

  3. The Pilots Brothers' refrigerator(dfs)

    The Pilots Brothers' refrigerator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 19718 ...

  4. cocos代码研究(1)sprite学习笔记

    各种方法创建Sprite和Animate //图片创建法 参数一:图片资源路径 参数二:Rect选区 auto sprite = Sprite::create(, )); addChild(sprit ...

  5. (源码)自己写的ScrollView里套漂亮的圆角listview(算是漂亮吧。。。)

    找了相关的资料终于写完了: http://blog.csdn.net/jamin0107/article/details/6973845 和 http://emmet1988.iteye.com/bl ...

  6. 在Linux用户空间做内核空间做的事情

    导读 我相信,Linux 最好也是最坏的事情,就是内核空间(kernel space)和用户空间(user space)之间的巨大差别.如果没有这个区别,Linux 可能也不会成为世界上影响力最大的操 ...

  7. Numeric Validation

    Numeric Inputs Numbers are even easier to validate than text. For number input types, the HTML5 spec ...

  8. simple_html_dom使用小结

    simple_html_dom使用小结 分类: PHP2012-08-31 14:24 3094人阅读 评论(0) 收藏 举报 htmlcallbackstringdivfunctionfile  1 ...

  9. 《ASP.NET1200例》C# WINFORM程序的三层架构如何建立的。

    先添加-新建项目-windows应用程序,然后在右边的解决方案资源管理器上面,在当前的解决方案上面右击,点,添加-新建项目-类库,分别建立.DAL,BLL,Model三个项目,然后,在DAL项目上右击 ...

  10. 44. log(n)求a的n次方[power(a,n)]

    [题目] 实现函数double Power(double base, int exponent),求base的exponent次方,不需要考虑溢出. [分析] 这是一道看起来很简单的问题,很容易写出如 ...