在我的第一个 researchkit 项目工作时,我需要将 Researchkit 调查的结果序列化为 json。我需要此 json 数据将调查答案发送回服务器。要序列化 ORKResult 对象,建议使用函数 ORKESerializer.JSONDataForObject(taskResult)。此函数会将自定义对象转换为正确的有效 json 对象。ORKESerializer 实际上并不是 Researchkit 的一部分,但它包含在一个测试应用程序中,名为 ORKTest,它位于 GitHub 上。下面是执行此操作的代码。
extension ViewController : ORKTaskViewControllerDelegate {
func taskViewController(taskViewController: ORKTaskViewController, didFinishWithReason reason: ORKTaskViewControllerFinishReason, error: NSError?) {
switch reason {
case .Completed:
let taskResult = taskViewController.result
let jsonData = try! ORKESerializer.JSONDataForObject(taskResult)
if let jsonString = NSString(data: jsonData, encoding: NSUTF8StringEncoding) {
print(jsonString)
}
break
case .Failed, .Discarded, .Saved:
break
}
//Handle results with taskViewController.result
taskViewController.dismissViewControllerAnimated(true, completion: nil)
}
现在,这段代码在模拟器中运行时运行良好。但是在尝试为 ios 设备构建时出现错误。我已将 ORKESerializer.h 和 .m 文件添加到我的 swift 项目中,并且还在桥接头中导入了 .h。以下是编译时抛出的错误。
{
Undefined symbols for architecture armv7:
"_OBJC_CLASS_$_ORKLocation", referenced from:
objc-class-ref in ORKESerialization.o
"_OBJC_CLASS_$_ORKConfirmTextAnswerFormat", referenced from:
objc-class-ref in ORKESerialization.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
}
有谁知道如何解决这一问题?