HealthKit開發快速入門教程之HealthKit的主要型別資料

大學霸發表於2015-05-04

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章