HealthKit开发教程之HealthKit的复合数据

HealthKit开发教程之HealthKit的复合数据

复合数据就是复合单位和值构成的数据。所谓复合单位就是由单位进行乘法、除法等得到的单位,如m/s、lb·ft等就是复合单位。本节将针对这些复合数据进行讲解。

HealthKit的相乘得到的复合数据

在物理学中我们可能接触过类似lb·ft(扭矩单位,扭矩是使物体发生转动的一种特殊的力矩。)这样的单位。这种单位我们可以看做是两个单位相乘得到的复合单位。开发者如果想要在自己的程序中使用这种复合单位,首先需要对这种单位进行创建。创建这种单位需要使用到unitMultipliedByUnit(_:)方法,其语法形式如下:

  • func unitMultipliedByUnit(_ unit: HKUnit!) -> HKUnit!

其中,参数unit:用来指定被乘的单位。

【示例2-44:HKUnit-unitMultipliedByUnit】下面显示汽车中发电机的扭矩,以“磅.英尺”为单位。代码如下:

  • 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 footUnit = HKUnit.footUnit()                                                                                      //创建长度单位
  •         var poundUnit=HKUnit.poundUnit()                                                                               //创建质量单位
  •         var unitMultipliedByUnit=footUnit.unitMultipliedByUnit(poundUnit)          //相乘得到的复合单位
  •         var myForce=HKQuantity(unit: unitMultipliedByUnit, doubleValue: 100)
  •         println("汽车中发电机的扭矩为:\(myForce)")
  •     }
  • ……
  • }

此时运行程序,会看到如下的效果。

  • 汽车中发电机的扭矩为:100 lb·ft

HealthKit的相除得到的复合数据

在数学计算中,我们常常会遇到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

HealthKit的单位和整数的次方构成的复合数据

在求体积和面积时,我们都会使用到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

HealthKit的倒数构成的复合单位

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人!

# 高校智慧校园解决方案摘要 智慧校园解决方案是针对高校信息化建设的核心工程,旨在通过物联网技术实现数字化校园的智能化升级。该方案通过融合计算机技术、网络通信技术、数据库技术和IC卡识别技术,初步实现了校园一卡通系统,进而通过人脸识别技术实现了更精准的校园安全管理、生活管理、教务管理和资源管理。 方案包括多个管理系统:智慧校园管理平台、一卡通卡务管理系统、一卡通人脸库管理平台、智能人脸识别消费管理系统、疫情防控管理系统、人脸识别无感识别管理系统、会议签到管理系统、人脸识别通道管理系统和图书馆对接管理系统。这些系统共同构成了智慧校园的信息化基础,通过统一数据库和操作平台,实现了数据共享和信息一致性。 智能人脸识别消费管理系统通过人脸识别终端,在无需接触的情况下快速完成消费支付过程,提升了校园服务效率。疫情防控管理系统利用热成像测温技术、视频智能分析等手段,实现了对校园人员体温监测和疫情信息实时上报,提高了校园公共卫生事件的预防和控制能力。 会议签到管理系统和人脸识别通道管理系统均基于人脸识别技术,实现了会议的快速签到和图书馆等场所的高效通行管理。与图书馆对接管理系统实现了一卡通系统与图书馆管理系统的无缝集成,提升了图书借阅的便捷性。 总体而言,该智慧校园解决方案通过集成的信息化管理系统,提升了校园管理的智能化水平,优化了校园生活体验,增强了校园安全,并提高了教学和科研的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值