在HealthKit节约训练问题,在数学中节约问题怎么解决决

不对的地方感谢指点, 求大神轻拍臉

昨天还看到有的同学对NSPredicate的options选项有疑问这里给大致翻译一下

样本的开始时间必须等于或晚于目标的开始时间,样品的结束时间必须早于目标嘚结束时间

样本的开始时间必须等于或晚于目标的开始时间,样品的开始时间必须早于目标的结束时间。

样本的结束时间必须等于或晚于目标的开始时间,样品的结束时间必须早于目标的结束时间

不对的地方感谢指点, 求大神轻拍臉

昨天还看到有的同学对NSPredicate的options选项有疑问这里给大致翻译一下

样本的开始时间必须等于或晚于目标的开始时间,样品的结束时间必须早于目标嘚结束时间

样本的开始时间必须等于或晚于目标的开始时间,样品的开始时间必须早于目标的结束时间。

样本的结束时间必须等于或晚于目标的开始时间,样品的结束时间必须早于目标的结束时间

当今社会睡眠革命逐渐成为一種时尚,与以往相比用户不仅想知道自己的睡眠时间,同时对用于分析他们一段时间内睡眠状态的数据也很感兴趣科技的飞速发展,包括硬件技术尤其是手机技术的发展,为这个日益增长的需求带来了新的曙光

Apple提供了一种很酷的方式,可以安全地访问用户的个人健康信息并将这些信息安全地存储在其内置应用Health。使用HealthKit框架你不仅可以开发一个健身应用,还可以访问睡眠分析数据

在这篇教程中,我将对HealthKit框架做个简要的介绍并演示如何创建一款具有睡眠分析功能的简单应用。

HealthKit框架提供一个叫HealthKit store的加密数据库用以存储数据你可以使用HKHealthStore类来访问这个数据库。iPhone和Apple Watch都有自己的HealthKit store并且用户健康状况的数据在两种设备之间是同步的。然而需要注意的是,为了节省空间旧數据会被周期性地从Apple Watch

HealthKit是一个很强大的工具,可以帮助开发者们基于健康数据去创建一个iOS 或者 watchOS App它可以管理多渠道的数据,并且根据用户的偏好自动合并不同来源的数据这些健康类App可以访问各个来源的原生数据,同时合并数据这些数据不仅可以表明身体健康指标,健身和營养状况还可以用来分析睡眠状态。

文章的后半部分内容我将展示如何在iOS系统上使用HealthKit框架去存储和访问睡眠分析的数据。这些方法在watchOS應用上同样有效

请注意:这篇教程的编程环境是 Swift 2.0 和 Xcode 7。所以学习这篇教程的时候确定自己使用的是Xcode 7 或其更新的版本。

在开始之前请并解压。我已经为你创建了基本功能的用户界面当你运行这个工程的时候,你将看到一个计时器UI当你按下开始按钮以后就会显示计时。

峩们要创建的应用目的是保存计时期间的睡眠分析信息和检索数据要使用 HealthKit,开发者需要获取使用HealthKit的授权在你的工程中,进行target -> capabilities -> 打开HealthKit开关操作

正如上文提到的那样,HealthKit给予用户控制自身健康数据的权限所以你首先不得不去请求用户的许可,这样你才可以访问(读/写)用户嘚睡眠分析数据想要访问用户数据,前提是要导入内置的HealthKit 框架并更新在viewDidLoad中的代码如下:

以上代码将提示用户去同意或拒绝你的权限请求。在这个闭包中你可以处理成功或失败状态的回调事件,并且可以获得请求的结果用户也不一定会同意你app所有的权限请求,所以你必须在app中合理地处理错误

但是出于测试的目的,你必须选择“允许”选项来允许应用程序访问你的设备上的健康数据

首先,我们如何能够拿到睡眠分析数据呢通过Apple的文档,每个睡眠分析数据样本都仅有一个数值为了区分卧床和睡眠状态,HealthKit使用了两个或更多的重叠时間的样本加以分析通过比较这些样本的开始和结束时间,APP就可以得出一些二次统计数据:

  • 用户进入睡眠所花费的时间

  • 用户在床上的时间囷实际睡眠时间的百分比

  • 用户卧床和睡眠的时间的总和

简而言之你需按照下面的方法将睡眠分析数据保存到HealthKit Store:

  • 定义两个NSData对象用于开始和結束时间

  • 创建一个新的HKCategorySample类型的实例,用于记录睡眠数据单个的样本代表用户卧床或睡眠的时长。因此我们将创建一个包含重叠时间的臥床状态和睡眠状态的样本。

笔者注:对于类别样本的类型可以参考。

如果你想用Swift 实现上述所有这里提供关于保存卧床和睡眠分析数據的代码片段。请在ViewController类中插入如下代码:

当我们想去保存睡眠数据到HealthKit中去的时候就可以调用这个方法。

要读取睡眠分析数据需要创建┅个查询方法。首先创建一个HKCategoryTypeIdentifierSleepAnalysis类型的HKObjectType实例你也可能需要使用一个断言,通过startDate和endDate这两个NSData对象对应的时间范围来过滤取回的数据同时还需偠创建一个sortDescriptor对象,来对样本数据进行排序从而获得你想要的结果。

查询睡眠数据的代码大致如下:

以上的代码先查询到所有的睡眠分析嘚数据并按照降序排列。每个查询结果将被打印出来打印结果包含开始时间、结束时间、以及所对应的类别(卧床或睡眠)。我已经設置了限制取回最近的三十条记录样本。你可以使用自己的断言方法自定义开始时间和结束时间来限制查询的区间

对于 demo 程序,我已经使用了一个NSTimer去显示点击开始按钮后流逝的时间NSDate对象被创建用来保存开始和结束之间的睡眠分析数据。在stop方法中你可以调用saveSleepAnalysis()方法和retrieveSleepAnalysis()方法去保存和获取睡眠数据。

然而在你个人的应用中你或许会通过改变对应的NSDate对象,从而选择相应的开始时间和多个(不同的)结束时间来记录个人卧床和睡眠状态的数据

当完成调整后,你可以运行这个demo并开始计时运行APP几分钟,然后点击stop按钮之后,打开这款健康应用就可以找到你的睡眠数据啦。

对于健康类App的一些建议

HealthKit旨在为开发者们提供一个公共平台可以很方便地共享和访问用户的数据,並避免任何可能的重复或不一致的数据苹果审核指南对使用 HealthKit的APP有很明确的要求,如果对用户的读/写权限请求没有明确的描述就很可能导致应用程序被拒绝

如果你的健康类APP存储伪造或者错误的数据,也将会会被拒绝这意味着,你不能使用类似于本教程中的睡眠分析数据你需要通过准确的算法去计算与健康有关的数据。或许你应该尝试使用设备中内置传感器的统计数据加以分析,得出分析数据以避免出现错误或不准确数据。

关于完整的Xcode项目你可以在下载。

我要回帖

更多关于 在数学中节约问题怎么解决 的文章

 

随机推荐