Core Data Fetch仅限于关系中的对象

时间:2013-11-19 21:42:04

标签: ios core-data nspredicate nsfetchrequest

鉴于以下核心数据模型:

EntityA <--->> EntityB <--->> EntityC

我已经在第一个EntityA中提取了所需的TableViewController。选择行时,用户会按照关系转到第二个ViewController。第二个视图有一个@property EntityB *entityB。在第二个视图中,有些控件将修改EntityC的属性。因此,如果EntityB有4个EntityC,则会有4个滑块。每个滑块都会修改EntityC之一的属性。

我的问题是:选择正确的EntityC的最佳方法是什么?以下谓词

NSEntityDescription *entity = [NSEntityDescription entityForName:@"EntityC" inManagedObjectContext:self.managedObjectContext];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"entityB == %@ AND rank == <#some number#>", self.entityB];

返回正确的值。但是,当选择4个实体中的1个时,这不是太过分了吗?

2 个答案:

答案 0 :(得分:0)

如果您使用有序关系,那么您可以直接获取相应的对象。如果没有那么你需要使用一个谓词(虽然你可以在关系(如果小计数)或MOC(如果大数)上运行它。

答案 1 :(得分:0)

我对有序关系的经验不佳。重新排列容易出错,并且您没有NSSetNSArray的许多优点,因为NSOrderedSet都不是从position派生的。

而是向EntityC添加{{1}}属性。在我看来,这是最直接的方式。不,即使只有少数几个实例,IMO也不会有些过分。现在,您可以非常轻松地对关系实体进行排序和识别。