HealthKit開發教程之HealthKit的主要類型數據

HealthKit開發快速入門教程之HealthKit的主要類型數據

HealthKit中,咱們將最經常使用到的數據稱之爲主要數據。主要數據基本上有三種:長度類型的數據、質量類型的數據、能量類型的數據。本節將主要對這三種主要數據進行講解。ide

長度類型數據

長度單位是指丈量空間距離上的基本單元,是人類爲了規範長度而制定的基本單位。而長度單位和數值構成的就是長度類型數據。根據單位的類型不一樣,該類型能夠分爲國際長度單位和英制長度單位兩種。如下就是對這兩種長度單位的介紹。spa

1.國際長度單位orm

國際長度單位是「米」爲單位的。對於此單位的建立,須要使用到meterUnit()方法,其語法形式以下:對象

  • class func meterUnit() -> Self!教程

【示例2-8HKUnit-meterUnit】下面顯示用戶一天內的行走路程。代碼以下:ci

  • import UIKit開發

  • import HealthKit字符串

  • class ViewController: UIViewController {it

  •     override func viewDidLoad() {io

  •         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人!

相關文章
相關標籤/搜索