1

初めての Researchkit プロジェクトに取り組んでいるときに、Researchkit 調査の結果を json にシリアル化する必要がありました。アンケートの回答をサーバーに送り返すには、この json データが必要です。ORKResult オブジェクトをシリアル化するには、関数 ORKESerializer.JSONDataForObject(taskResult) を使用することをお勧めします。この関数は、カスタム オブジェクトを適切な有効な json オブジェクトに変換します。ORKESerializer は実際には Researchkit の一部ではありませんが、GitHub にある ORKTest というテスト アプリに含まれていました。以下は、これを行うコードです。

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 ファイルを迅速なプロジェクトに追加し、ブリッジ ヘッダーに .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) }

エラーの添付画像

これを修正する方法を知っている人はいますか?

4

1 に答える 1

0

このリンクに従って、この問題は修正され、Github の安定版とマージされました。

于 2016-05-17T06:23:54.150 に答える