Collect/access ResearchKit 结果并保存到文件
Collect/access ResearchKit results and save to file
概览:
我正在开发我的第一个应用程序。它收集用户位置信息以跟踪自行车骑行。我将内容保存到 .txt 文件(坐标信息和属性信息),然后用户可以将他们的数据导出 iOS 应用程序以供进一步分析。我已经成功地添加了一个保存文本文件的功能来存储上面提到的信息以及将该文件导出到应用程序之外的能力。
问题:
我已经设置了一个 ResearchKit 调查来收集可以与用户骑自行车相关联的额外属性信息。示例问题包括,为什么用户是 riding/trip 目的 和 天气如何,等等)。我想将 ResearchKit 调查的结果附加到包含坐标信息的文本文件中,或者在必要时创建一个单独的文本文件。我知道我需要以某种方式访问 ORKStepResult 任务,但我不熟悉该过程。
研究:
我使用 researchKit 搜索了 Github 示例应用程序,但对于使用 Swift 编写的应用程序,搜索结果非常有限。我不太舒服 "developer" 能够阅读 Objective-C 然后将其翻译成 Swift... 总有一天!我也看过 Rey Wenderlich 的教程,但他们没有提到如何访问、保存和导出调查结果。我查看了 StackExchange 上的其他问题,但大多数都有与 Objective-C.
有关的详细答案
谢谢 StackExchange,非常感谢您的帮助!
基本上,您可以通过在 ORKTaskViewController
委托中实现 func taskViewController(taskViewController: ORKTaskViewController, didFinishWithReason reason: ORKTaskViewControllerFinishReason, error: NSError?)
方法并访问 taskViewController.result
从那里开始。
然后,递归迭代 ORKTaskResult
的 results
属性 直到到达叶子,然后您可以以您选择的格式访问和存储所需的信息。
有关不同结果类型的文档,请参阅 ORKResult.h
文件。
如果你只是将根 ORKTaskResult
打印到控制台(或文本文件),它会递归地显示所有结果树,虽然我认为这不是完全合适的格式,因为这些显示您不需要的对象名称和内存地址。
最后,您可能想看看官方存储库中的 ORKCatalog
示例项目。当您 运行 应用程序时,它有一个 结果 选项卡,显示调查结果或 activity 最后 运行 的结果。
读取和显示结果的代码在 ORKCatalog
项目的 Displaying Results
组中。 This is the aforementioned task did finish delegate method, which in turns sets the results in the results view controller as shown here, and which ultimately gets processed by the code in the ResultTableViewProviders.swift
文件。
但是,这里的结果处理代码有点复杂(因为它考虑了所有不同的结果类型),如果您只想处理特定类型的结果,您的解决方案可能会简单得多。
首先定义一个常量来保存粗略的结果。您在任务视图控制器委托方法中执行此操作 -> taskViewController:didFinishWithReason:error:
然后有两个基本步骤可以从粗略的结果到最终得到您需要的格式的结果。
步骤 1 ->
let roughResult = taskViewController.result.stepResult(forStepIdentifier: "stepIdentifier")?.results?.first as! ORKResult
注意:转换为 ORKResult 是冗长的:结果已经是 ORKResult 类型。仍然这样做:这将使您的对象 + 程序更易于阅读。
步骤 2 ->
let cutResult = roughResult as! ORKDateResult
注意:将 roughResult 转换为 ORKDateResult 是获得所需结果类型的关键。通过将其转换为您需要的结果类型,您可以通过调用步骤 2 中的常量来访问正确的属性。
步骤 3
let date = cutResult.dateAnswer
概览: 我正在开发我的第一个应用程序。它收集用户位置信息以跟踪自行车骑行。我将内容保存到 .txt 文件(坐标信息和属性信息),然后用户可以将他们的数据导出 iOS 应用程序以供进一步分析。我已经成功地添加了一个保存文本文件的功能来存储上面提到的信息以及将该文件导出到应用程序之外的能力。
问题: 我已经设置了一个 ResearchKit 调查来收集可以与用户骑自行车相关联的额外属性信息。示例问题包括,为什么用户是 riding/trip 目的 和 天气如何,等等)。我想将 ResearchKit 调查的结果附加到包含坐标信息的文本文件中,或者在必要时创建一个单独的文本文件。我知道我需要以某种方式访问 ORKStepResult 任务,但我不熟悉该过程。
研究: 我使用 researchKit 搜索了 Github 示例应用程序,但对于使用 Swift 编写的应用程序,搜索结果非常有限。我不太舒服 "developer" 能够阅读 Objective-C 然后将其翻译成 Swift... 总有一天!我也看过 Rey Wenderlich 的教程,但他们没有提到如何访问、保存和导出调查结果。我查看了 StackExchange 上的其他问题,但大多数都有与 Objective-C.
有关的详细答案谢谢 StackExchange,非常感谢您的帮助!
基本上,您可以通过在 ORKTaskViewController
委托中实现 func taskViewController(taskViewController: ORKTaskViewController, didFinishWithReason reason: ORKTaskViewControllerFinishReason, error: NSError?)
方法并访问 taskViewController.result
从那里开始。
然后,递归迭代 ORKTaskResult
的 results
属性 直到到达叶子,然后您可以以您选择的格式访问和存储所需的信息。
有关不同结果类型的文档,请参阅 ORKResult.h
文件。
如果你只是将根 ORKTaskResult
打印到控制台(或文本文件),它会递归地显示所有结果树,虽然我认为这不是完全合适的格式,因为这些显示您不需要的对象名称和内存地址。
最后,您可能想看看官方存储库中的 ORKCatalog
示例项目。当您 运行 应用程序时,它有一个 结果 选项卡,显示调查结果或 activity 最后 运行 的结果。
读取和显示结果的代码在 ORKCatalog
项目的 Displaying Results
组中。 This is the aforementioned task did finish delegate method, which in turns sets the results in the results view controller as shown here, and which ultimately gets processed by the code in the ResultTableViewProviders.swift
文件。
但是,这里的结果处理代码有点复杂(因为它考虑了所有不同的结果类型),如果您只想处理特定类型的结果,您的解决方案可能会简单得多。
首先定义一个常量来保存粗略的结果。您在任务视图控制器委托方法中执行此操作 -> taskViewController:didFinishWithReason:error:
然后有两个基本步骤可以从粗略的结果到最终得到您需要的格式的结果。
步骤 1 ->
let roughResult = taskViewController.result.stepResult(forStepIdentifier: "stepIdentifier")?.results?.first as! ORKResult
注意:转换为 ORKResult 是冗长的:结果已经是 ORKResult 类型。仍然这样做:这将使您的对象 + 程序更易于阅读。
步骤 2 ->
let cutResult = roughResult as! ORKDateResult
注意:将 roughResult 转换为 ORKDateResult 是获得所需结果类型的关键。通过将其转换为您需要的结果类型,您可以通过调用步骤 2 中的常量来访问正确的属性。
步骤 3
let date = cutResult.dateAnswer