代码之家  ›  专栏  ›  技术社区  ›  mootymoots

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

  •  0
  • mootymoots  · 技术社区  · 15 年前

    和以前一样,我有用户和朋友实体,一个用户对多个朋友。

    我想看看我是否已经添加了一个朋友(此时只知道潜在新朋友的名字)。所以

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

    唯一能做到这一点的方法是遍历所有友元对象,并对照一个属性检查它是否在其中,如果在所有迭代之后它都找不到匹配项,则添加它。

    有更好的方法吗?

    2 回复  |  直到 15 年前
        1
  •  1
  •   gerry3    15 年前

    这里是一个 不同的 方式:

    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;
        }
    }
    
        2
  •  1
  •   Community CDub    8 年前