核心数据一对多关系 - 许多包含值为x的属性

时间:2010-01-15 13:31:32

标签: iphone core-data

和以前一样,我有User和Friend实体,One User to Many Friend(s)。

我希望能够检查一下我之前是否已经添加了一位朋友(虽然此时只知道潜在新朋友的名字)。所以

NSString *name = @"Bob";
Bool exists = NO;
for(Friend *friend in user.friends)
{
      if([friend.name isEqualToString:name])
           exists = YES;
}
if(!exists)
{
    //add user
}

我能看到的唯一方法就是遍历所有的Friend对象并检查属性以查看它是否在那里,如果在所有迭代之后找不到匹配,则添加它。

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

这是不同的方式:

BOOL exists = ([[user.friends filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"name == %@",name]] count] > 0);

另外,如果你这样做,你应该提前休息:

for(Friend *friend in user.friends)
{
    if([friend.name isEqualToString:name]) {
        exists = YES;
        break;
    }
}