0

私は多くのデータを含むプロジェクトに取り組んでおり、最初はすべて plist で行っていましたが、それが手に負えなくなってきており、Core Data を学習する必要があることに気付きました。Core Data でやりたいことができるかどうかはまだ完全にはわかりませんが、うまくいくはずだと思います。データ モデルを設定しましたが、それが正しい方法かどうかわかりません。あなたが助けることができると思われる場合は、読み進めてください。私が正しい方向に進んでいるかどうかをお知らせください. できる限り丁寧に説明したいと思っていますので、ご容赦ください。

ルート レベルで設定された属性を持つ基本的なオブジェクトを取得しました。名前、生年月日などの属性を持つ人を言います。非常に単純です。この「Person」のようなエンティティをモデルに 1 つ設定し、データにいくつでも保存して、配列として取得できますよね? データベースに追加された日付など、Person の属性に基づいて並べ替えることができます。

もう少し混乱するのは、個人ごとにいくつかの異なるデータ コレクションを保存する場合です。たとえば、コースと関連するテスト マークのリストです。plist では、これを格納した辞書の配列を、評価された日付でソートして格納します。データ モデルでこれを設定する方法は、"Tests" というエンティティと、Person から Tests への "to-many" 関係を追加し、それをプルすると、タイムスタンプで注文できる NSSet を取得することでした。また?これを行うより良い方法はありますか?

同様に、Person は一連の数値データの配列を持つ場合があります (経時的にグラフ化できるようなものです。たとえば、Nike+ は距離と時間などのランニング データを保存し、1 人の人物にはそれらに関連付けられた複数のランニングがあるため、配列のセット、それぞれに関連付けられた独自の収集日があります)。これを設定する方法は少し異なります。"Runs" 属性にタイムスタンプ属性だけを使用し、逆の "forPerson" を使用して対多関係を介して Person から接続します。次に、Runs エンティティは、数値データと時間を格納するための属性を持つ対多関係を介して別のエンティティに接続されます。これも、時間/順序属性を使用して並べ替えます。

したがって、私が持っている主な質問は、タイムスタンプのような内部属性を使用してセットをソートすることが、コアデータから「配列」にロードする正しい方法であるかどうかです。コア データに NSArray を格納する方法に関するフォーラム/スタック オーバーフローの検索は、これに比べて非常に複雑に思え、何かを誤解しているように感じます。

ご協力いただきありがとうございます。すべてのテキストで申し訳ありませんが、私は Core Data を初めて使用し、データを取得/保存するためのメソッドのコーディングを開始する前に、データ モデルを適切に設定することが不可欠であると考えています。必要に応じて、これを示すサンプル モデルをセットアップし、その写真を投稿できます。

4

1 に答える 1

1

CoreData はデフォルトで NSSets を提供します。これらは、並べ替えられた配列が必要な場合は、allObjects または sortedArrayUsingDescriptors を呼び出して配列に変換できます。リレーションシップの説明の「順序付き」プロパティは、管理対象オブジェクトの NSOrderedSet を提供します。ハッシュされたセットは、追加、アクセス、およびメンバーシップのチェックをより迅速に提供しますが、並べ替えには (順序付きセットに比べて) ペナルティがあります。

于 2012-03-15T05:08:44.177 に答える