2011-08-14 5 views
0

用語と定義を学習するためのフラッシュカードのモデルがあります。 私は、次の属性を持つエンティティカードを作成しました:コアデータ - 正しいデータモデルを構築するのに助けてください

packTitle デフ レベル 用語

カード明確なテーマとセットの例の動物のための同じpackTitleを、持っています。利用可能なすべてのpackTitlesを移入する 私は明確packTitle

- (NSArray *) cardsForPackTitle:(NSString *)selectedPackTitle { 

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Card" inManagedObjectContext:managedObjectContext]; 

    [fetchRequest setEntity:entity]; 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(packTitle like %@)", selectedPackTitle]; 

    [fetchRequest setPredicate:predicate]; 

    NSError *error; 

    NSArray *fetchedCards = [managedObjectContext executeFetchRequest:fetchRequest error:&error ]; 

    [fetchRequest release]; 

    return fetchedCards; 

} 

持つすべてのカードのすべての上記の作品を取得する

NSArray *arrayOfTitles = [[[fetchedResultsController fetchedObjects] 
              valueForKey:@"packTitle"] 
             valueForKeyPath:@"@distinctUnionOfObjects.self"]; 

配列を得るが、私は明確packTitleでカードを削除する必要がある場合、それはそのコードと思われます は単純な作業のために長くなる。

質問:データモデルを別の方法で作成する必要がありますか?私はCore Dataを初めて使いました。申し訳ありませんが、その質問がばかげているのです。

答えて

1

はい、あなたはおそらくそれを別の方法で行うべきです。動物カードであることを示すために、「動物」を複数のカードに繰り返し保管することはあまり意味がありません。

(おそらく)行うべきことは、Packという別のエンティティを作成することです。このエンティティは、title属性とcardsの一対多の関係を持つ必要があります。次にcardsの関係をCardエンティティに接続します。 CardエンティティからpackTitle属性を削除してください。

コアデータの詳細については、Core Data Programming Guideもお読みください。最初は理解するのが少し難しいですが、2回の読書と少しの練習の後では意味があります。

+0

ありがとうございました。あなたの答えは私が正しい方向に動いていることを確認しました。 – Michael

関連する問題