如何从一对多关系的子集中获取sectionNameKeyPath?

时间:2011-03-04 19:26:58

标签: iphone uitableview core-data nsfetchedresultscontroller

我正在尝试从我的节名称的一对多关系中获取一组值。我的fetchRequest实体设置为单个实体,我想使用(例如)@“to_many.attribute1”作为sectionNameKeyPath。但是,我只想使用它们的某个子集来对实体进行排序。

有没有办法在sectionNameKeyPath中添加谓词?

或者,我恐怕可能需要重新创建数据模型,以便更轻松地访问数据?

2 个答案:

答案 0 :(得分:0)

当我的sectionNameKeyPath需要引用非平凡的东西时,我使用的一个选项是向我的模型添加一个新属性并将其标记为Transient。

然后,您可以向托管对象添加一个类别,该托管对象具有根据您的规则计算字段的getter。

@implementation MyObject (SectionKeyPathAdditions)

-(NSDate *)toManyAttribute1Date // This is the new transient attribute name
{
     NSDate *dynamicReturnDate = [NSDate date];
     // use app logic to grab the subset of valid dates from attribute1
     return dynamicReturnDate;
}

答案 1 :(得分:0)

你的谓词会是这样的:

ALL to_many.attribute1=="something"

ALL和ANY运算符搜索集合,这是多对多关系返回的。虽然,你不能菊花链它们,例如。

ALL to_many.another_to_many.attribute1