2012-01-11 15 views
2

私はアプリケーションでこれを使用するためにCoreDataを学習しており、SQLモデルの生成にいくつか問題があります。iOS CoreDataデータベースモデルを正しく作成するには?

少なくとも2つのエンティティが必要です。 1つはItems、もう1つはHistoryです。 ロジック:すべての履歴エンティティには、1つまたは複数のItemsが含まれている必要があります。 Itemsはユニークではありません。

これをXcodeでどのようにモデル化できますか? "History2Items"のようなリンクエンティティが必要ですか?

私はしばらくの間これを苦労してきましたが、適切な解決方法を見つけ出すことができます。

助けが必要ですか?

UPDATE:

[request setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObject:@"item"]]; 

そして、それは私がのためにアイテムを取得する方法は次のとおりです。私は、プリフェッチのための関係を使用し、データをフェッチするために

CoreData model

:私はこのモデルを作った

各履歴:

History *history = [self.historyArray objectAtIndex:indexPath.row]; 
NSMutableArray *items = [NSMutableArray arrayWithArray:[history.item allObjects]]; 

ただ、各項目を取得するために、items配列に掛け。

これは簡単です。 @Ashley Millsに感謝します。

+0

私は現時点ではXcodeを持っていないのでわからない。しかし、私が知る限り、両方のエンティティをグラフィカルエディタで作成し、それらを接続して適切な関係(1:n、n:1,1:1など)を設定することができます –

+0

これは私がしたものの、動作しません。私はある種の「リンク」エンティティが必要です。私の応答を見てください答え1. –

答えて

2

ItemHistoryエンティティを作成し、それらを次のように接続します

enter image description here

Itemは、多対に1対多の関係を変え、複数のHistoryに属することができた場合たくさんの。

インデックスを使用して履歴のアイテムを注文する場合は、リンクするエンティティのみが必要です。各アイテムは特定の履歴に対して異なるインデックスを持つ可能性があります。たとえば、日付でアイテムを注文している場合は、リンクエンティティは必要ありません。

+1

私は、項目エンティティはユニークな項目を持つ必要があることを忘れていた。これは、2つのヒストリ要素が同じItemを持つことができることを意味します。 SQL世界では、私はリンクエンティティを作成します。私は正しいですか? –

+0

これはSQLではないので、あなたがそこから知っていることを忘れてみてください!私の答えを更新しました。 –

+0

あなたはそのようなものを意味しますか:http://i.stack.imgur.com/o7VK1.png? –

関連する問題