我正在开发一个简单的ResearchKit应用程序,它有20个调查问题,或ORKSteps。如何从将调查提交到数据库的参与者那里获得答案?
我的研究发现ORKESerializer和SQLite是解决方案的潜在部分。对于如何将这些东西集成到一个工作解决方案中,我缺少一个大的视图。
在不了解数据库或Swift数据传输的情况下开始,所以任何基本信息都会很有帮助。
- 我如何使用Swift从ORKResult提取数据?
- 我提取数据到哪里?或者,小型调查的标准数据库类型是什么?
ResearchKit没有任何现成的解决方案来存储您的结果。一般来说,开发人员的任务是遍历ORKResult
层次结构,保存处理后的结果以供以后访问,或者将它们发送到远程服务器。
这里有几个选项:
-
使用NSCoding来存储香草
ORKTaskResult
(与其ORKResult
子)。这样,您可以在以后重新创建整个ORKTaskResult
层次结构来检查或处理它。 -
使用
ORKESerializer
(如您所料)将ORKResult
s序列化为JSON格式。ORKESerializer
目前是作为ORKTest
单元测试的一部分包含的,并且没有很好的文档记录。将来它可能会被移动到ResearchKit中,但现在它是完全可用的。JSON格式是特别有用的,如果你想发送你的结果到任何你自己的远程服务器。 -
您可以手动遍历
ORKResult
s并将它们转换为适合存储的对象,或者转换为数据库记录。正如你所说,你可以使用SQLite来持久化它们;或您选择的其他数据库;
总而言之,对于持久化结果没有推荐的或标准的方法,这取决于你的需要。
你也可以看看官方的开源RK应用程序。我认为他们利用AppCore库(位于ResearchKit之上)来存储任务结果(并且还使用Sage Bridge将结果发送到Sage的服务器)。但如果你的需求更简单,那就太过分了。
我建议你运行示例ORKCatalog
应用程序,然后检查ORKTaskResult
层次结构(你可以在应用程序本身中这样做)。您将了解结果层次结构的外观。
我没有研究工具包的经验,但作为一个数据库,你可以使用sqlite。Stephencelis为swift做了一个很好的包装器,你可以使用它。