复合数据就是复合单位和值构成的数据。所谓复合单位就是由单位进行乘法、除法等获得的单位,如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人!