收集/访问ResearchKit结果并保存到文件

Nik*_*lai 1 export ios swift researchkit

概述: 我正在开发我的第一个应用程序.它收集用于跟踪自行车骑行的用户位置信息.我将内容保存为.txt文件(坐标信息和属性信息)然后,用户可以将其数据导出iOS应用程序以进行进一步分析.我已经成功添加了一个保存文本文件函数来存储上面提到的信息以及将该文件导出到应用程序之外的功能.

问题: 我已经设置了一个ResearchKit调查,以收集可以与用户骑车相关的其他属性信息.示例问题包括,用户为什么骑行/旅行目的以及天气等等.我想将ResearchKit调查的结果附加到具有坐标信息的文本文件中,或者在必要时创建单独的文本文件.我知道我需要以某种方式访问​​ORKStepResult任务,但我不熟悉这个过程.

研究: 我使用researchKit搜索了Github的示例应用程序,但是使用Swift编写的应用程序的结果非常有限.我不是一个足够舒适的"开发人员"能够阅读Objective-C然后将其翻译成Swift ...有一天!我还查看了Rey Wenderlich的教程,但他们没有提到如何访问,保存和导出调查结果.我已经在StackExchange上查看了其他问题,但大多数问题都与Objective-C有关.

谢谢StackExchange你的帮助将不胜感激!

Ric*_*aez 5

基本上,您可以ORKTaskResult通过func taskViewController(taskViewController: ORKTaskViewController, didFinishWithReason reason: ORKTaskViewControllerFinishReason, error: NSError?)ORKTaskViewController委托中实现方法并taskViewController.result从那里访问来访问结果树(以对象为根).

然后,递归迭代ORKTaskResultresults属性,直到到达叶子,然后您可以以您选择的格式访问和存储所需的信息.

有关ORKResult.h不同结果类型的文档,请参阅该文件.


如果您只是将根打印ORKTaskResult到控制台(或文本文件),它将递归显示所有结果树,虽然我认为这不是一个完全合适的格式,因为这些显示对象名称和内存地址,你不要需要.


最后,您可能希望查看ORKCatalog官方存储库中的示例项目.运行应用程序时,它有一个" 结果"选项卡,显示最后运行的调查或活动的结果.

读取和显示结果的代码Displaying Results位于ORKCatalog项目组中.是前述的任务去把委托方法,其进而设置在结果视图控制器结果如图这里,和最终得到由在代码处理ResultTableViewProviders.swift文件.

但是,这里的结果处理代码有点涉及(因为它考虑了所有不同的结果类型),如果您只想处理特定类型的结果,那么您的解决方案可能会简单得多.