CoreData - 获取NSManagedObject的关系子集

时间:2014-07-17 07:46:30

标签: objective-c xcode nspredicate nsmanagedobject

Noob提问传入(非常简单但无法在任何地方找到答案):

我有一个实体

MY_ENT *my_ent = {initialized elsewhere};

此实体具有称为my_rel

的多对多关系
NSLog(@"Relations: %lu", my_ent.my_rel.count);
  关系:15

我想获得它的一个子集,其中字段my_field等于@" xx"

我试图循环填充NSArray的关系,但没有运气(指针似乎已取消分配)。

NSMutableArray *my_rels;
for (MY_REL *my_rel in my_ent.my_rel) {
    if ([my_rel.my_field isEqualToString:@"xx"]) {
        [my_rels addObject:my_rel];
    }
}

也许我应该使用谓词,但我不明白如何在这里使用谓词。

1 个答案:

答案 0 :(得分:2)

是的,使用谓词会更容易。你可以这样做:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"my_field = %@", x];
NSSet *subset = [my_ent.my_rels filteredSetUsingPredicate:predicate];