HealthKit开发快速入门教程之HealthKit的主要类型数据

2023-11-09 02:50

本文主要是介绍HealthKit开发快速入门教程之HealthKit的主要类型数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

HealthKit开发快速入门教程之HealthKit的主要类型数据

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

长度类型数据

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

1.国际长度单位

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


  • class func meterUnit() -> Self!


【示例2-8HKUnit-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-9HKUnit-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-10HKUnit-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-11HKUnit-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-12HKUnit-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-13HKUnit-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-14HKUnit-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-15HKUnit-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-16HKUnit-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-17HKUnit-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-18HKUnit-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-19HKUnit-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-20HKUnit-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-21HKUnit-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-22HKUnit-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-23HKUnit-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-24HKUnit-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-25HKUnit-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-26HKUnit-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-27HKUnit-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-28HKUnit-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-29HKUnit-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人!


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29597077/viewspace-1621924/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29597077/viewspace-1621924/

这篇关于HealthKit开发快速入门教程之HealthKit的主要类型数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/373691

相关文章

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Mysql如何将数据按照年月分组的统计

《Mysql如何将数据按照年月分组的统计》:本文主要介绍Mysql如何将数据按照年月分组的统计方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql将数据按照年月分组的统计要的效果方案总结Mysql将数据按照年月分组的统计要的效果方案① 使用 DA

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析