11

定期的な (毎年の) イベントを表す Event という Core Data エンティティがあるとします。各イベントには「日付」プロパティがあります。

このイベントを「次の日付」でソートしてユーザーに提示する必要があります。もちろん、このプロパティは現在の日付に依存するため、transientとしてマークする必要があります。データベースに保存しても意味がありません。

しかし、ご存じのとおり、Core Data の一時的なプロパティで並べ替えをクエリすることはできません。

このプロパティを一時的に保持し、Core Data を並べ替えるスマートな方法はありますか? 私は自分自身をフェッチしてソートしたくありませんが、この一時的な情報をデータベースに保存することも避けたいと思っています。

4

1 に答える 1

5

日付を別のエンティティに保存する場合は、日付だけを取得して、好きなように並べ替えることができます。Event から EventDate への関係、および指定された EventDate から Event を見つけることができる対応する逆の関係があります。

提案: フェッチ要求でソート記述子を指定して、年の初めからソートされた日付を取得します。次に、返された配列で現在の日付を見つけ、その時点より前のすべてを配列の最後に移動するだけです。

同じ日付に複数のイベントが発生する可能性があるため、EventDate->Event の関係を多対多にします。このようにモデルを設定すると、「日付 X にどのようなイベントが発生するか?」という質問に簡単に答えることができるという優れた特性が得られます。

于 2011-05-05T04:04:07.660 に答える