2011-08-14 51 views
0

有一個用於學習術語和定義的閃存卡模型。 我創建實體卡具有以下屬性:核心數據 - 請幫我建立正確的數據模型

packTitle 高清 水平 長期

卡在一組具有明確的主題具有相同的packTitle,例如動物。 要填充所有可用packTitles我得到一個數組

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

讓所有的卡有明確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; 

} 

以上所有作品,但是當我需要有明確packTitle刪除卡,似乎碼 成爲長期的簡單任務。

問題:我應該建立一個數據模型來處理其他情況嗎?我是Core Data的新手,很抱歉,如果問題很蠢。

回答

1

是的,你最應該做的不同。將「動物」反覆存儲在各種卡片中僅僅是爲了表示它們是動物卡片沒有多大意義。

你應該(可能)要做的是創建另一個實體Pack。該實體應具有title屬性和cards一對多關係。然後將cards關係連接到您的Card實體。 (從Card實體中刪除packTitle屬性。)

您還應該閱讀Core Data Programming Guide以瞭解有關核心數據的更多信息。起初有點難以理解,但是經過幾次閱讀和一些練習之後,它開始有意義。

+0

非常感謝,你的回答證實了我正朝着正確的方向前進。 – Michael