您的位置:首页 > 其它

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

2015-05-05 16:47 288 查看

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

在HealthKit中除了主要数据之外,还有6个辅助数据分别为:体积类型数据、压力类型数据、时间类型数据、温度类型数据、标量类型数据和电导率类型数据。本节将针对这6个辅助数据进行讲解。

HealthKit的体积类型数据

体积,或称容量、容积,几何学专业术语,是物件占有多少空间的量。体积单位可以用来测量物体的体积。由体积单位和值组成的数据就是体积类型的数据。体积单位可以分为:国际体积单位、英制体积单位和美制体积单位。

1.国际体积单位

体积的国际单位为“升”,符号为L。如果想要创建一个以“升”为单位的单位对象,需要使用到literUnit()方法,其语法形式如下:

class func literUnit() -> Self!
【示例2-30:HKUnit-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-31:HKUnit-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-32:HKUnit-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-33:HKUnit-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-34:HKUnit-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-35:HKUnit-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-36:HKUnit-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-37:HKUnit-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-38:HKUnit-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-39:HKUnit-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-40:HKUnit-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-42:HKUnit-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-43:HKUnit-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人!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  HealthKit