複合數據就是複合單位和值構成的數據。所謂複合單位就是由單位進行乘法、除法等獲得的單位,如m/s、lb·ft等就是複合單位。本節將針對這些複合數據進行講解。ide
在物理學中咱們可能接觸過相似lb·ft(扭矩單位,扭矩是使物體發生轉動的一種特殊的力矩。)這樣的單位。這種單位咱們能夠看作是兩個單位相乘獲得的複合單位。開發者若是想要在本身的程序中使用這種複合單位,首先須要對這種單位進行建立。建立這種單位須要使用到unitMultipliedByUnit(_:)方法,其語法形式以下:spa
func unitMultipliedByUnit(_ unit: HKUnit!) -> HKUnit!orm
其中,參數unit:用來指定被乘的單位。教程
【示例2-44:HKUnit-unitMultipliedByUnit】下面顯示汽車中發電機的扭矩,以「磅.英尺」爲單位。代碼以下:ip
import UIKitci
import HealthKit開發
class ViewController: UIViewController {數學
override func viewDidLoad() {it
super.viewDidLoad()io
// Do any additional setup after loading the view, typically from a nib.
var footUnit = HKUnit.footUnit() //建立長度單位
var poundUnit=HKUnit.poundUnit() //建立質量單位
var unitMultipliedByUnit=footUnit.unitMultipliedByUnit(poundUnit) //相乘獲得的複合單位
var myForce=HKQuantity(unit: unitMultipliedByUnit, doubleValue: 100)
println("汽車中發電機的扭矩爲:\(myForce)")
}
……
}
此時運行程序,會看到以下的效果。
汽車中發電機的扭矩爲:100 lb·ft
在數學計算中,咱們經常會遇到m/s這樣的單位。這種單位是由兩個單位相除獲得的。若是開發者想要在本身的代碼中使用這種單位。首先須要使用unitDividedByUnit(_:)方法實現對這種單位的建立,其語法形式以下:
func unitDividedByUnit(_ unit: HKUnit!) -> HKUnit!
其中,參數_ unit用來指定單位,此單位用來做爲除數。
【示例2-45:HKUnit-unitDividedByUnit】下面顯示用戶跑步的速度,以「米/秒」爲單位。代碼以下:
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 meters = HKUnit.meterUnit() //建立長度單位
let seconds = HKUnit.secondUnit() //建立時間單位
let metersPerSecond = meters.unitDividedByUnit(seconds) //相除獲得的複合單位
let speed=HKQuantity(unit: metersPerSecond, doubleValue: 2)
println("小明跑步的速度爲:\(speed)")
}
……
}
此時運行程序,會看到以下的效果。
小明跑步的速度爲:2 m/s
在求體積和麪積時,咱們都會使用到m3、m2這樣單位。這種單位是由單位和整數的次方構成的複合單位。若是開發者想要建立這種單位,就須要使用到unitRaisedToPower(_:)方法,其語法形式以下:
func unitRaisedToPower(_ power: Int) -> HKUnit!
其中,參數power是一個整數,用來指定次方。
【示例2-46:HKUnit-unitRaisedToPower】下面顯示水池的體積,以「立方米」爲單位。代碼以下:
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 meters = HKUnit.meterUnit()
var cubicmeter=meters.unitRaisedToPower(3) //單位和整數的次方構成的複合單位
var pool=HKQuantity(unit: cubicmeter, doubleValue: 100)
println("水池的體積爲:\(pool)")
}
……
}
此時運行程序,會看到以下的效果。
水池的體積爲:100 m^3
1/s這個單位爲「赫茲」單位,它表示在1秒時間間隔內發生一個週期過程的頻率。相似於1/s這種單位就是由一個單位的倒數構成。若是想要在程序中使用這種單位,須要使用到reciprocalUnit()方法。reciprocalUnit()方法的功能就是對單位進行求倒數構成新的複合單位。其語法形式以下:
func reciprocalUnit() -> HKUnit!
【示例2-47:HKUnit-reciprocalUnit】下面顯示在1秒時間間隔內發生一個週期過程的頻率,以「1/秒」爲單位。代碼以下:
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 seconds = HKUnit.secondUnit()
var secondsInverse = seconds.reciprocalUnit() //由倒數構成的複合單位
var frequency=HKQuantity(unit: secondsInverse, doubleValue: 50)
println("在1秒時間間隔內發生一個週期過程的頻率爲:\(frequency)")
}
……
}
此時運行程序,會看到以下的效果。
在1秒時間間隔內發生一個週期過程的頻率爲:50 1/s
本文選自:HealthKit開發快速入門教程大學霸資料,轉載請註明出處,尊重技術尊重IT人!