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

HealthKit开发教程之HealthKit的复合数据的更多相关文章

  1. HealthKit开发教程之HealthKit的主要类型数据

    HealthKit开发教程之HealthKit的主要类型数据 在HealthKit中,我们将最常用到的数据称之为主要数据.主要数据基本上有三种:长度类型的数据.质量类型的数据.能量类型的数据.本节将主 ...

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

    HealthKit开发教程之HealthKit的辅助数据 在HealthKit中除了主要数据之外,还有6个辅助数据分别为:体积类型数据.压力类型数据.时间类型数据.温度类型数据.标量类型数据和电导率类 ...

  3. HealthKit开发快速入门教程之HealthKit数据的操作

    HealthKit开发快速入门教程之HealthKit数据的操作 数据的表示 在HealthKit中,数据是最核心的元素.通过分析数据,人们可以看到相关的健康信息.例如,通过统计步数数据,人们可以知道 ...

  4. HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID

    HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID HealthKit开发准备工作 在开发一款HealthKit应用程序时,首先需要讲解HealthKit中有哪些类,在i ...

  5. HealthKit开发快速入门教程之HealthKit开发概述简介

    HealthKit开发快速入门教程之HealthKit开发概述简介 2014年6月2日召开的年度开发者大会上,苹果发布了一款新的移动应用平台,可以收集和分析用户的健康数据.该移动应用平台被命名为“He ...

  6. Xamarin Anroid开发教程之Anroid开发工具及应用介绍

    Xamarin Anroid开发教程之Anroid开发工具及应用介绍 Xamarin开发Anroid应用介绍 如今智能手机已经盛行了好几年,而针对这些智能手机的软件开发也变得异常火热.但是在Andro ...

  7. AppleWatch开发教程之Watch应用对象新增内容介绍以及编写运行代码

    AppleWatch开发教程之Watch应用对象新增内容介绍以及编写运行代码 添加Watch应用对象时新增内容介绍 Watch应用对象添加到创建的项目中后,会包含两个部分:Watch App 和 Wa ...

  8. iOS 9应用开发教程之ios9中实现按钮的响应

    iOS 9应用开发教程之ios9中实现按钮的响应 IOS9实现按钮的响应 按钮主要是实现用户交互的,即实现响应.按钮实现响应的方式可以根据添加按钮的不同分为两种:一种是编辑界面添加按钮实现的响应:另一 ...

  9. iOS 9应用开发教程之ios9的视图

    iOS 9应用开发教程之ios9的视图 了解IOS9的视图 在iPhone或者iPad中,用户看到的和摸到的都是视图.视图是用户界面的重要组成元素.本节将主要讲解ios9视图的添加.删除以及位置和大小 ...

随机推荐

  1. thinkphp中page方法

    page方法也是模型的连贯操作方法之一,是完全为分页查询而诞生的一个人性化操作方法. 用法 我们在前面已经了解了关于limit方法用于分页查询的情况,而page方法则是更人性化的进行分页查询的方法,例 ...

  2. redis和memcached比较

    1.Memcached采用客户端-服务器的架构,服务器维护了一个键-值关系的数据表,服务器之间相互独立,互相之间不共享数据也不做任何通讯操作.客户端需要知道所有的服务器,并自行负责管理数据在各个服务器 ...

  3. [codeforces 528]B. Clique Problem

    [codeforces 528]B. Clique Problem 试题描述 The clique problem is one of the most well-known NP-complete ...

  4. Python Django 的 django templatedoesnotexist

    django 1.8版本的解决方案 在  setting.py 这个文件里 TEMPLATES = [ ...... #原来的 #'DIRS': [ ], //  这个 列表里添加 template路 ...

  5. java面试总结-(hibernate ibatis struts2 spring)

    说说Hibernate对象的三种状态 Hibernate对象有三种状态,分别是:临时态(Transient). 持久态(Persistent).游离态(Detached). 临时状态:是指从对象通过n ...

  6. 《ASP.NET MVC4 WEB编程》学习笔记------Web API

    本文截取自情缘 1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集 ...

  7. 如何判断CPU字节序之[Big-endian vs Little-endian]

    [本文链接] http://www.cnblogs.com/hellogiser/p/big-endian-vs-little-endian.html [Big-endian vs Little-en ...

  8. 使用 TRegistry 类[1]: 显示各主键下的项

    使用 TRegistry 类[1]: 显示各主键下的项 {XP 注册表中的主键} HKEY_CLASSES_ROOT    {文件类型信息} HKEY_CURRENT_USER    {当前用户信息} ...

  9. Java for LeetCode 078 Subsets

    Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset must ...

  10. codeforces A. Vasily the Bear and Triangle 解题报告

    题目链接:http://codeforces.com/problemset/problem/336/A 好简单的一条数学题,是8月9日的.比赛中没有做出来,今天看,从pupil变成Newbie了,那个 ...