核心数据 - 请帮我构建正确的数据模型

时间:2011-08-14 10:37:46

标签: objective-c ios core-data

有一种用于学习术语和定义的闪存卡模型。 我创建了具有以下属性的实体卡:

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 个答案:

答案 0 :(得分:1)

是的,你应该以不同的方式做到这一点。将“动物”重复存放在各种卡片中只是为了表示它们是动物卡片没有多大意义。

你应该(可能)做的是创建另一个名为Pack的实体。此实体应具有title属性和cards一对多关系。然后将cards关系与您的Card实体相关联。 (从packTitle实体中删除Card属性。)

您还应该阅读Core Data Programming Guide以了解有关核心数据的更多信息。起初有点难以理解,但经过几次阅读和一些练习之后,它才开始变得有意义。

相关问题