NSSortDescriptor を提供せずに NSFetchRequest を使用することはできません。私がやりたいのは、結果を取得して、作成された順序で表示することだけです。それを行う組み込みの方法はありますか?または、新しい「自動インクリメント」フィールドを作成する必要がありますか? (私の意見では、これは CoreData が表すすべてのものに反します)。
3 に答える
Core Data は順序について何も保証しません。「自動インクリメント」フィールドを作成する必要はありません。ただし、適切な属性を作成できます。何かが作成された日付は明らかに重要なので、dateCreated 属性をデータ オブジェクトに追加する必要があります。次に、それで並べ替えます。
これは、管理対象オブジェクトのdidAwakeFromInsert
メソッドで簡単に設定できます。
テーブルの観点からコアデータを考えているようで、テーブルの行番号が提供するのと同じように自動順序付けがあるはずです。ただし、Core Data は、テーブル、行、またはその他の固定された線形データ構造を使用しません。
各フェッチ要求は、データの取り込みに役立つビューのニーズに非常に固有であるため、フェッチに組み込みの順序はありません。NSFetchRequest
は配列を返すためソート記述子を必要とし、オブジェクト グラフ内の順序付けされていない管理対象オブジェクトを順序付けられた配列に変換するためにソート記述子を必要とします。
各データ モデルにはデータを構造化するための異なる基準があるため、一般に、オブジェクト グラフ内の管理対象オブジェクトには組み込みの順序はありません。たとえば、ほとんどのモデルでは、オブジェクトが挿入される時系列は無関係です。ごく少数のケースでしか必要とされないのに、あらゆる場所のすべての Core Data アプリが使用しなければならないすべての管理対象オブジェクトにタイムスタンプを組み込むのはなぜですか?
時系列がモデルの論理関係の重要な部分である場合、つまり、データモデルがシミュレートする実際のオブジェクト、イベント、または条件を反映している場合、Jason Coco が提案したように、エンティティ オブジェクトがオブジェクトになるように、エンティティ自体にタイムスタンプ属性を追加する必要があります。独自の創造の時間をモデル化します。