Предикат Проблема при выборке объектов в отношении ко многим

У меня есть простая ситуация, когда у меня есть две сущности, связанные с отношением «многие ко многим».

Два объекта, Тревоги и Теги. Когда я хочу получить все тревоги, связанные с данным тегом, я попробовал это:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ IN tags", theTag];   

Я получаю все сигналы тревоги, а не только те, которые связаны с тегом.

Однако попытка сделать это наоборот работает:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF in %@", theTag.alarms];

По сложным причинам, связанным с повторным использованием кода, мне действительно нужно, чтобы первый работал. Любая помощь приветствуется! Спасибо!


person p.pad    schedule 09.02.2011    source источник


Ответы (1)


Если у вас есть объект Tag, вы можете получить все его тревоги, выполнив:

NSSet *alarms = [theTag alarms];

Если по какой-то странной причине вам нужно сделать это с запросом на выборку (чего вам не следует делать), ваш предикат должен быть:

NSPredicate *p = [NSPredicate predicateWithFormat:@"tags CONTAINS %@", theTag];
person Dave DeLong    schedule 09.02.2011
comment
Конечно, конечно. Иногда вам просто нужно, чтобы кто-то ударил вас по голове... Цените это! - person p.pad; 11.02.2011