HealthKit開發教程之HealthKit的輔助資料

大學霸發表於2015-05-05

HealthKit開發教程之HealthKit的輔助資料

HealthKit中除了主要資料之外,還有6個輔助資料分別為:體積型別資料、壓力型別資料、時間型別資料、溫度型別資料、標量型別資料和電導率型別資料。本節將針對這6個輔助資料進行講解。

HealthKit的體積型別資料

體積,或稱容量、容積,幾何學專業術語,是物件佔有多少空間的量。體積單位可以用來測量物體的體積。由體積單位和值組成的資料就是體積型別的資料。體積單位可以分為:國際體積單位、英制體積單位和美製體積單位。

1.國際體積單位

體積的國際單位為“升”,符號為L。如果想要建立一個以“升”為單位的單位物件,需要使用到literUnit()方法,其語法形式如下:


  • class func literUnit() -> Self!


【示例2-30HKUnit-literUnit】下面顯示一桶可樂的容量,以“升”為單位。程式碼如下:


  • 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.literUnit()
  •         var myVolume=HKQuantity(unit: myUnit, doubleValue: 2.5)
  •         println("一桶可樂的容量為:\(myVolume)")
  •     }
  • ……
  • }


此時執行程式,會看到如下的效果。


  • 一桶可樂的容量為:2.5 L


注意:“升”也是可以新增字首的,此時需要使用到literUnitWithMetricPrefix(_:)方法,其語法形式如下:


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


其中,prefix用來指定一個有效的度量字首值,這些值就是表2-1中的內容。

【示例2-31HKUnit-literUnitWithMetricPrefix】下面顯示一桶可樂的容量,以“千升”為單位。程式碼如下:


  • 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.literUnitWithMetricPrefix(HKMetricPrefix.Kilo)
  •         var myVolume=HKQuantity(unit: myUnit, doubleValue: 0.0025)
  •         println("一桶可樂的容量為:\(myVolume)")
  •     }
  • ……
  • }


此時執行程式,會看到如下的效果。


  • 一桶可樂的容量為:0.0025 kL


2.英制體積單位

英制體積單位有兩種:一種是液體盎司;另一種是品脫。以下就是對這兩個單位的具體介紹。

1)液體盎司

液體盎司是一種液體的計量單位。1英制液體盎司等於28.41毫升。如果開發者想要建立以“英制液體盎司”為單位的單位物件,需要使用到fluidOunceImperialUnit()方法,其語法形式如下:


  • class func fluidOunceImperialUnit() -> Self!


2)品脫

品脫是是容量的計量單位。1英制品脫等於20液體盎司。開發者要想建立以“英制品脫”為單位的單位物件,需要使用到pintImperialUnit()方法,其語法形式如下:


  • class func pintImperialUnit() -> Self!


【示例2-32HKUnit-pintImperialUnit】下面顯示一桶可樂的容量,以“英制液體盎司”和“英制品脫”為單位。程式碼如下:


  • 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 myfluidUnit=HKUnit.fluidOunceImperialUnit()
  •         var myfluidVolume=HKQuantity(unit: myfluidUnit, doubleValue: 88)
  •         println("一桶可樂的容量為:\(myfluidVolume)")
  •         //建立以“英制品脫”為單位的資料
  •         var mypintUnit=HKUnit.pintImperialUnit()
  •         var mypintVolume=HKQuantity(unit: mypintUnit, doubleValue: 4.4)
  •         println("一桶可樂的容量為:\(mypintVolume)")
  •     }
  • ……
  • }


此時執行程式,會看到如下的效果。其中,英制液體盎司被簡寫為fl_oz_imp;英制品脫被簡寫為pt_imp


  • 一桶可樂的容量為:88 fl_oz_imp
  • 一桶可樂的容量為:4.4 pt_imp


3.美製體積單位

與英制體積單位一樣,美製體積單位也有兩種::一種是液體盎司;另一種是品脫。以下就是對這兩個單位的具體介紹。

1)液體盎司

美製液體盎司一般使用在美國等地,一般1美製液體盎司等於29.571毫升。開發者想要建立以“美製液體盎司”為單位的單位物件,需要使用到fluidOunceUSUnit()方法,其語法形式如下:

class func fluidOunceUSUnit() -> Self!

2)品脫

與美製液體盎司一樣,美製品脫一般使用在美國等地。開發者想要建立以“美製品脫”為單位的單位物件,需要使用到pintUSUnit()方法,其語法形式如下:


  • class func pintUSUnit() -> Self!


【示例2-33HKUnit-pintUSUnit】下面顯示一桶可樂的容量,以“美製液體盎司”和“美製品脫”為單位。程式碼如下:


  • 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 myfluidUnit=HKUnit.fluidOunceUSUnit()
  •         var myfluidVolume=HKQuantity(unit: myfluidUnit, doubleValue: 85)
  •         println("一桶可樂的容量為:\(myfluidVolume)")
  • //建立以“美製品脫”為單位的資料
  •         var mypintUnit=HKUnit.pintUSUnit()
  •         var mypintVolume=HKQuantity(unit: mypintUnit, doubleValue: 4.4)
  •         println("一桶可樂的容量為:\(mypintVolume)")
  •     }
  • ……
  • }


此時執行程式,會看到如下的效果。其中,美製液體盎司被簡寫為fl_oz_us;美製品脫被簡寫為pt_us


  • 一桶可樂的容量為:85 fl_oz_us
  • 一桶可樂的容量為:4.4 pt_us


HealthKit的壓力型別資料

壓力在物理學方面指垂直作用在物體表面上的力。壓力單位是用於計量壓力的標準。壓力單位和值就組成了壓力型別的資料。壓力單位用兩種,一種是國際壓力單位;另一種是非國際壓力單位。以下將對這兩種壓力單位進行講解。

1.國際壓力單位

壓力的國際單位為帕斯卡,可簡稱帕,符號Pa。開發者想要建立以“帕斯卡”為單位的單位物件需要使用到pascalUnit()方法,其語法形式如下:


  • class func pascalUnit() -> Self!


【示例2-34HKUnit-pascalUnit】下面顯示桌子所承受的壓力,以“帕”為單位。程式碼如下:


  • 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.pascalUnit()
  •         var deskPressure=HKQuantity(unit: myUnit, doubleValue: 500)
  •         println("桌子所承受的壓力為:\(deskPressure)")
  •     }
  • ……
  • }


此時執行程式,會看到如下的效果。


  • 桌子所承受的壓力為:500 Pa


注意:在“帕斯卡”的前面也可以新增字首,使其形成“千帕”等。為“帕斯卡”新增字首需要使用到pascalUnitWithMetricPrefix(_:),其語法形式如下:


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


其中,prefix用來指定一個有效的度量字首值,這些值就是表2-1中的內容。

【示例2-35HKUnit-pascalUnitWithMetricPrefix】下面顯示桌子所承受的壓力,以“千帕”為單位。程式碼如下:


  • 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.pascalUnitWithMetricPrefix(HKMetricPrefix.Kilo)
  •         var deskPressure=HKQuantity(unit: myUnit, doubleValue: 0.5)
  •         println("桌子所承受的壓力為:\(deskPressure)")
  •     }
  • ……
  • }


此時執行程式,會看到如下的效果。


  • 桌子所承受的壓力為:0.5 kPa


2.非國際壓力單位

除了國際單位外,壓力中還有3個常使用到的單位分別為:毫米汞柱、釐米水柱、大氣壓強。這3個壓力單位並非國際單位。以下是對這3個單位的詳細講解。

1)毫米汞柱

毫米汞柱即毫米水銀柱(mmHg),是直接用水銀柱高度的毫米數表示壓強、壓力值的單位。如果想要在你的程式中建立一個以“毫米汞柱”為單位的單位物件,需要使用到millimeterOfMercuryUnit()方法,其語法形式如下:


  • class func millimeterOfMercuryUnit() -> Self!


2)釐米水柱

釐米水柱是直接用水柱高度的釐米數表示壓強、壓力值的單位。如果想要在你的程式中建立一個以“釐米水柱”為單位的單位物件,需要使用到centimeterOfWaterUnit()方法,其語法形式如下:


  • class func centimeterOfWaterUnit() -> Self!


【示例2-36HKUnit-centimeterOfWaterUnit】下面顯示桌子所承受的壓力,以“毫米汞柱”和“釐米水柱”為單位。程式碼如下:


  • 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 mymillimeterOfMercuryUnit=HKUnit.millimeterOfMercuryUnit()
  •         var deskmillimeterOfMercuryPressure=HKQuantity(unit: mymillimeterOfMercuryUnit, doubleValue: 5)
  •         println("桌子所承受的壓力為:\(deskmillimeterOfMercuryPressure)")
  • //建立以“釐米水柱”為單位的資料
  •         var mycentimeterOfWaterUnit=HKUnit.centimeterOfWaterUnit()
  •         var deskcentimeterOfWaterPressure=HKQuantity(unit: mycentimeterOfWaterUnit, doubleValue: 5)
  •         println("桌子所承受的壓力為:\(deskcentimeterOfWaterPressure)")
  •     }
  • ……
  • }


此時執行程式,會看到如下的效果。其中,毫米汞柱被簡寫為mmHg;釐米水柱被簡寫為cmAq


  • 桌子所承受的壓力為:5 mmHg
  • 桌子所承受的壓力為:5 cmAq


3)大氣壓強

大氣壓強是在標準大氣條件下海平面的氣壓,其值為101.325kPa,是壓強的單位,記作atm。如果想要建立一個以“大氣壓強”為單位的單位物件,需要使用到atmosphereUnit(),其語法形式如下:


  • class func atmosphereUnit() -> Self!


【示例2-37HKUnit-atmosphereUnit】下面顯示在標準大氣條件下海平面的氣壓,以“大氣壓強”為單位的資料。程式碼如下:


  • 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.atmosphereUnit()
  •         var seaPressure=HKQuantity(unit: myUnit, doubleValue: 5)
  •         println("在標準大氣條件下海平面的氣壓為:\(seaPressure)")
  •     }
  • ……
  • }


此時執行程式,會看到如下的效果。


  • 在標準大氣條件下海平面的氣壓為:5 atm


HealthKit的時間型別資料

時間是測量時間所用的基本單位。時間單位與值就構成了時間型別的資料。時間單位可以分為國際時間單位和非國際時間單位兩種。以下就是對它們的詳細介紹。

1.國際時間單位

時間的國際單位為秒,符號是s。如果想要使用“秒”這個單位,首先需要對以“秒”為單位的單位物件進行建立,此時需要使用到secondUnit()方法,其語法形式如下:


  • class func secondUnit() -> Self!


【示例2-38HKUnit-secondUnit】下面顯示使用者做完家務的所需的時間,以“秒”為單位。程式碼如下:


  • 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.secondUnit()
  •         var dothing=HKQuantity(unit: myUnit, doubleValue: 1200)
  •         println("小紅做完家務的時間為:\(dothing)")
  •     }
  • ……
  • }


此時執行程式,會看到如下的效果。


  • 小紅做完家務的時間為:1200 s


注意:開發者可以使用secondUnitWithMetricPrefix(_:)方法為“秒”新增字首,使其可以成為比秒更大或者更小的單位。其語法形式如下:


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


2.非國際時間單位

以下是對非國際時間單位的介紹。

1)分鐘

分鐘是表示時間長度的單位,一分鐘等於60秒。如果開發者想要建立一個以“分鐘”為單位的單位物件,需要使用到minuteUnit()方法,其語法形式如下:


  • class func minuteUnit() -> Self!


2)小時

小時也是時間單位。它不是時間的國際單位制基本單位(時間的國際單位制基本單位是秒),而是與國際單位制基本單位相協調的輔助時間單位。一般1小時等於60分鐘。如果開發者想要建立一個以“小時”為單位的單位物件,需要使用到hourUnit()方法,其語法形式如下:


  • class func hourUnit() -> Self!


3)天

天和小時一樣,也是時間單位。一般1天等於24小時。如果開發者想要建立一個以“天”為單位的單位物件,需要使用到dayUnit()方法,其語法形式如下:


  • class func dayUnit() -> Self!


【示例2-39HKUnit-dayUnit】下面實現86400秒與分鐘、小時、天之間的換算。程式碼如下:


  • 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 secondUnit=HKUnit.secondUnit()                                   //建立以“秒”為單位的單位物件
  •         var myData=HKQuantity(unit: secondUnit, doubleValue: 86400)
  •         var minuteUnit=HKUnit.minuteUnit()                                     //建立以“分鐘”為單位的單位物件
  •         println("86400秒=\(myData.doubleValueForUnit(minuteUnit))分鐘")
  •         var hourUnit=HKUnit.hourUnit()                                             //建立以“小時”為單位的單位物件
  •         println("86400秒=\(myData.doubleValueForUnit(hourUnit))小時")
  •         var dayUnit=HKUnit.dayUnit()                                                  //建立以“天”為單位的單位物件
  •         println("86400秒=\(myData.doubleValueForUnit(dayUnit))天")
  •     }
  • ……
  • }


此時執行程式,會看到如下的效果。


  • 86400秒=1440.0分鐘
  • 86400秒=24.0小時
  • 86400秒=1.0天


HealthKit的溫度型別資料

溫度(temperature)是表示物體冷熱程度的物理量,微觀上來講是物體分子熱運動的劇烈程度。度只能透過物體隨溫度變化的某些特性來間接測量。用來計量溫度的標準被稱為溫度單位。溫度單位與值共同構成溫度型別的資料。溫度單位可以分為攝氏溫度、華氏溫度、開爾文這3種。以下就是對這3種溫度單位的介紹。

1.攝氏度

攝氏度是目前世界上使用較為廣泛的一種溫度單位。它指在1標準大氣壓下,純淨的冰水混合物的溫度為0度,水的沸點為100度,其間平均分為100份,每一等份為1度,記作1℃。如果開發者想要建立一個以“攝氏度”為單位的單位物件,需要使用到degreeCelsiusUnit()方法,其語法形式如下:


  • class func degreeCelsiusUnit() -> Self!


2.華氏度

雖然中國在內的世界上很多國家都使用攝氏度,但世界上也有其他國家使用華氏度。例如,美國、緬甸和賴比瑞亞使用華氏度,而較少使用攝氏度。一般1華氏度等於-17.2222222攝氏度。如果開發者想要建立一個以“華氏度”為單位的單位物件,需要使用到degreeFahrenheitUnit()方法,其語法形式如下:


  • class func degreeFahrenheitUnit() -> Self!


3.開爾文

開爾文溫度是以絕對零度作為計算起點的溫度。開爾文溫度常用符號K表示,其單位為開爾文。一般1開爾文等於-272.15攝氏度。如果開發者想要建立以“開爾文”為單位的單位物件,需要使用到kelvinUnit()方法,其語法形式如下:


  • class func kelvinUnit() -> Self!


【示例2-40HKUnit-kelvinUnit】以不同的溫度單位顯示水的沸點。程式碼如下:


  • 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 degreeCelsiusUnit=HKUnit.degreeCelsiusUnit()
  •         var boilingPointOfCelsius=HKQuantity(unit: degreeCelsiusUnit, doubleValue: 100)
  •         println("水的沸點為:\(boilingPointOfCelsius)")
  •         //建立以“華氏度”為單位的資料
  •         var degreeFahrenheitUnit=HKUnit.degreeFahrenheitUnit()
  •         var boilingPointOfFahrenhe=HKQuantity(unit:degreeFahrenheitUnit , doubleValue: 212)
  •         println("水的沸點為:\(boilingPointOfFahrenhe)")
  •         //建立以“開爾文”為單位的資料
  •         var kelvinUnit=HKUnit.kelvinUnit()
  •         var boilingPointOfkelvin=HKQuantity(unit:kelvinUnit , doubleValue: 373.15)
  •         println("水的沸點為:\(boilingPointOfkelvin)")
  •     }
  • ……
  • }


此時執行程式,會看到如下的效果。其中,攝氏度被簡寫為degC;華氏度被簡寫為degF;開爾文被簡寫為K


  • 水的沸點為:100 degC
  • 水的沸點為:212 degF
  • 水的沸點為:373.15 K


HealthKit的標量型別資料

標量(scalar),亦稱“無向量”。有些物理量,只具有數值大小,而沒有方向,部分有正負之分。物理學中,標量(或作純量)指在座標變換下保持不變的物理量。用通俗的說法,標量是隻有大小,沒有方向的量。衡量標量的單位在HealthKit中有兩種:一種是計數的單位;另一種是百分比的單位。以下就是對這兩個單位的詳細介紹。

1.計數的單位

計數的單位在Healthkit中是最常見到的,如步數。如果想要建立一個計數的單位,需要使用到countUnit()方法,其語法形式如下:


  • class func countUnit() -> Self!
【示例2-41:HKUnit-countUnit】下面顯示使用者一天所走的步數。程式碼如下:
  • 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 myCount=HKUnit.countUnit()
  •         var myWalkCount=HKQuantity(unit: myCount, doubleValue: 1000)
  •         println("小紅一天行走的步數為:\(myWalkCount)")
  •     }
  • ……
  • }


此時執行程式,會看到如下的效果。其中,count就是就是計數時使用的單位。


  • 小紅一天行走的步數為:1000 count


2.百分比的單位

百分比是一種表達比例、比率或分數數值的方法,用“%”表示。如果想要建立一個百分比的單位物件,需要使用到percentUnit()方法,其語法形式如下:


  • class func percentUnit() -> Self!


【示例2-42HKUnit-percentUnit】下面顯示今日股票指數上漲幅度。程式碼如下:


  • 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.percentUnit()
  •         var myStockMarket=HKQuantity(unit: myUnit, doubleValue: 0.01)
  •         println("今日股票指數上漲\(myStockMarket)")
  •     }
  • ……
  • }


此時執行程式,會看到如下的效果。


  • 今日股票指數上漲0.01 %


HealthKit的電導率型別資料

電導率是一個物理學概念。在介質中,該量與電場強度之積等於傳導電流密度,也可以稱為導電率。電導率的單位為“西門子”。如果開發者想要建立一個以“西門子”為單位的單位物件,需要使用到siemenUnit()方法,其語法形式如下:


  • class func siemenUnit() -> Self!


【示例2-43HKUnit-siemenUnit】下面顯示工業廢水的電導率。程式碼如下:


  • 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.siemenUnit()
  •         var wastewater=HKQuantity(unit: myUnit, doubleValue: 1)
  •         println("工業廢水的電導率為:\(wastewater)")
  •     }
  • ……
  • }


此時執行程式,會看到如下的效果。其中,西門子的簡寫為S


  • 工業廢水的電導率為:1 S


注意:開發者可以使用siemenUnitWithMetricPrefix(_:)方法為“西門子”新增字首,使其可以成為比“西門子”更大或者更小的單位。其語法形式如下:


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


其中,prefix用來指定一個有效的度量字首值,這些值就是表2-1中的內容。

本文選自:HealthKit開發快速入門教程大學霸資料,轉載請註明出處,尊重技術尊重IT人!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-1624215/,如需轉載,請註明出處,否則將追究法律責任。

相關文章