1

概要: 初めてのアプリケーションを開発しています。自転車の走行を追跡するためにユーザーの位置情報を収集します。内容を .txt ファイルに保存します (座標情報と属性情報)。その後、ユーザーはデータを iOS アプリケーションからエクスポートして、さらに分析することができます。上記の情報を保存するためのテキスト ファイル保存機能と、そのファイルをアプリケーションの外部にエクスポートする機能を正常に追加しました。

問題: ResearchKit 調査をセットアップして、ユーザーの自転車乗車に関連付けることができる追加の属性情報を収集しました。質問の例には、ユーザーが乗っている理由や旅行の目的、天気などがあります)。座標情報が入ったテキストファイルにResearchKitの調査結果を追記したり、必要に応じて別途テキストファイルを作成したりしたいです。ORKStepResult タスクに何らかの方法でアクセスする必要があることはわかっていますが、そのプロセスに慣れていません。

調査: researchKit を使用して Github でサンプル アプリを検索しましたが、Swift で作成されたアプリの結果は非常に限られています。私は、Objective-C を読んでそれを Swift に翻訳できるほど快適な「開発者」ではありません... いつの日か! Rey Wenderlich のチュートリアルも見ましたが、調査結果へのアクセス、保存、エクスポートの方法については言及されていません。私は StackExchange に関する他の質問を見てきましたが、ほとんどの詳細な回答は Objective-C に関するものです。

StackExchange に感謝します。ご協力をお願いいたします。

4

2 に答える 2

5

基本的に、デリゲートにメソッドをORKTaskResult実装し、そこからアクセスすることで、結果ツリー (ルートとしてオブジェクトを持つ) にアクセスできます。func taskViewController(taskViewController: ORKTaskViewController, didFinishWithReason reason: ORKTaskViewControllerFinishReason, error: NSError?)ORKTaskViewControllertaskViewController.result

ORKTaskResult次に、葉に到達するまでのプロパティを再帰的に反復しresults、選択した形式で目的の情報にアクセスして保存できます。

ORKResult.hさまざまな結果タイプのドキュメントについては、ファイルを参照してください。


ルートORKTaskResultをコンソール (またはテキスト ファイル) に出力すると、すべての結果ツリーが再帰的に表示されますが、オブジェクト名とメモリ アドレスが表示されるため、完全に適切な形式ではないと思います。必要ありません。


最後にORKCatalog、公式リポジトリにあるサンプル プロジェクトを参照してください。アプリを実行すると、最後に実行された調査またはアクティビティの結果を示す [結果] タブが表示されます。

結果を読み取って表示するコードはDisplaying Results、プロジェクトのグループにありORKCatalogます。これは前述のtask did finishデリゲート メソッドであり、次に示すように結果ビュー コントローラーに結果を設定し、最終的にファイル内のコードによって処理されますResultTableViewProviders.swift

ただし、ここでの結果処理コードは少し複雑で (すべての異なる結果タイプを考慮しているため)、特定のタイプの結果のみを処理したい場合は、おそらくソリューションははるかに単純になります。

于 2016-03-07T11:12:34.037 に答える
0

まず、大まかな結果を保持する定数を定義します。タスク ビュー コントローラーのデリゲート メソッドでこれを行います ->taskViewController:didFinishWithReason:error:

次に、大まかな結果から最終的に必要な形式の結果を取得するための 2 つの基本的な手順があります。

ステップ 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

于 2019-04-18T13:45:46.677 に答える