【发布时间】:2011-03-17 01:42:55
【问题描述】:
我正在将以前存储在 XML 中的现有数据模型转换为 Core Data,因此我正在尝试尽可能正确地学习其中的技巧。 Core Data 显然是那些短期内不会流行的技术之一,所以我不妨“正确地学习它”。
以具有两个实体的核心数据模型为例:
- 人
- 食物
Person 与 Food 有 2 个一对多关系:
- favoriteFoods(一对多)
- hatedFoods(一对多)
(Person 和 Food 也是 NSManagedObject 的子类。)
在之前的数据模型中,Person 维护了两个NSArray 实例变量。如果我想要最喜欢的食物,我可以致电:
Person *fred = [[Person alloc] init];
NSArray *fredsFavorites = fred.favoriteFoods;
轻松挤压。
我正在阅读 Core Data 的文档,但在给定 NSFetchRequest 的情况下,我似乎找不到获取此 NSArray 的正确方法,因为 我无法定义我想要获得的关系对象来自。
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Food" inManagedObjectContext:[fred managedObjectContext]]];
[request setIncludesSubentities:NO];
NSArray *fredsFavoriteAndHatedFoods = [[fred managedObjectContext] executeFetchRequest:request error:nil];
这将返回存储在favoriteFoods 和hatedFoods 中的所有Food 项。我怎样才能把这些分开?当然有一个简单的解释,但我目前还没有很好地掌握这个概念,无法用核心数据行话来解释它,因此我的谷歌搜索没有结果。
【问题讨论】:
标签: objective-c xcode core-data entity-relationship