Отношение «один ко многим» в основных данных - многие ли содержат атрибут со значением x

Как и раньше, у меня есть сущности «Пользователь» и «Друг», «Один пользователь - множество друзей».

Я хотел бы иметь возможность проверить, не добавлял ли я друга ранее (пока я знаю только имя потенциального нового друга на тот момент). Так

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

Единственный способ, которым я могу это сделать, - это перебрать все объекты Friend и проверить атрибут, чтобы увидеть, есть ли он там, и если после всех итераций он не найдет совпадения, добавьте его.

Есть ли способ лучше?


person mootymoots    schedule 15.01.2010    source источник


Ответы (2)


Вот другой способ:

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;
    }
}
person gerry3    schedule 15.01.2010

NSPredicate

см. также этот вопрос

person Ahmed Kotb    schedule 15.01.2010