2016-05-24 9 views
0

を使用して取得コアデータの関係私は、次のデータモデルの関係は(カッコ内の属性)を持つキー

日(日)----------- >>イベント(日付、名前)

日からからイベントまで1対多の関係があります。

イベントが最初に作成され、保存されている(への参照を持っていないすなわちイベントエンティティ)は、逆の関係はありません。この日は後で作成されます。

コアデータも行くと、すべてのイベントその日の日付と同じ日付を持つを検索持っているエンティティを取得する方法はありますか?他の質問も検索しましたが、イベントを手動で設定する場合は、が作成されます。

答えて

0

CoreDataNSFetchRequestと照会すると、1つの特定のエンティティタイプ(つまりinitWithEntityName(_:)イニシャライザ)のみを照会できます。 2つのエンティティ間にリレーションシップが設定されていない場合は、NSFetchRequestインスタンスを1つだけ取り出すことはできません(同じNSPredicateを使用することができます。両方にdateという属性がある場合)。

は、他の質問への答えは、おそらくあなたが設定関係を持っている場合は、あなたの関係のキーを使用すると、フェッチ時に関係のためのエンティティを取得するためには何でもにNSFetchRequestエンティティのプロパティrelationshipKeyPathsForPrefetchingを設定することができ、示すように、と述べました初期エンティティデータベースへの複数回のトリップを避けることを目標としている場合は、returnsObjectsAsFaultsfalseと設定することをお勧めします(オブジェクトの数が比較的少ない場合にのみ行います)。

+0

ドキュメントからは、すでにDayエンティティに関連付けられているイベントが取得されます。私の質問は、手動でそれらを関連付けないでそれらを取得する方法です – robola

+0

@robola私が私の答えで言ったように "あなたは2つのエンティティ間の関係を設定していない場合、あなたは単一のNSFetchRequest'でそれらの両方を取得することはできません。 –

+0

私は関係があります。あなたが意味することを誤解していない限り、DayエンティティとEventエンティティの間に1対多の関係があります – robola

0

チャールズは言ったように、2回のフェッチ要求を行います。最初にの日を取得するために、を入力してから、のイベントを同じ日付に取得するように要求します。

私は、逆の関係を設定し、オブジェクト作成のタイミングを変更することです。 イベントを作成するときに、オブジェクトをリンクする場合は、新しいオブジェクトを同時に作成します。このようにした場合は、の日にはを単独で取得し、そのイベントは関係を通じて自動的に利用可能になります。

+0

」と書かれています。私はチャールズを最初に答えたので答えをマークしましたが、2回のフェッチ要求は私がやったことです。私はコアデータがそれを行うことができるかどうかを調べようとしていました。逆の提案をすることができない2つの理由があります。最初は、すべての日付に対してDayオブジェクトであることが保証されていないことです。イベントが作成された時点であっても、それを作成するための情報。こうすることで、Dayオブジェクトが取得されたときに有効であるかどうかを確認する必要がなくなります。 – robola

関連する問題