Использование NSPredicate, чтобы узнать, содержит ли NSSet объекты из другого NSSet

У меня есть объект Core Data, в котором есть NSOrderedSet объектов Core Data, называемых иерархиейItems. Я хочу создать запрос на выборку, который будет проверять, содержит ли набор HieraryItems объект, который также находится в другом NSMutableSet объектов Core Data. Я хотел бы создать NSPredicate или NSExpression, который имеет те же функции, что и

[obj.hierarchyItems intersectsSet: setOfItems];

person user3200440    schedule 15.01.2014    source источник
comment
Мне это не кажется дубликатом. Этот вопрос касается пересечения множеств, которое на самом деле легче проверить, чем равенство множеств.   -  person Martin R    schedule 16.01.2014
comment
@MartinR: проверка равенства множеств довольно тривиально выводится из пересечения множеств   -  person njzk2    schedule 28.02.2014
comment
@ njzk2: я не совсем понимаю, что вы имеете в виду. Вопрос касался предикатов Core Data (которые имеют лишь ограниченный набор доступных операторов). Как видно из ответа на возможный дубликат, найти все объекты, отношение которых равно заданному набору, сложнее, чем решение этого вопроса.   -  person Martin R    schedule 28.02.2014


Ответы (1)


Чтобы получить объект, для которого hierarchyItems имеет непустое пересечение с setOfItems, используйте запрос на выборку с предикатом

[NSPredicate predicateWithFormat:@"ANY hierarchyItems IN %@", setOfItems]
person Martin R    schedule 16.01.2014
comment
К сожалению, это не работает. Я пробовал это безрезультатно. - person user3200440; 17.01.2014
comment
@ user3200440: Что ж, я проверил это, и у меня это сработало. - Можете ли вы предоставить больше информации? Как определяются объекты, отношения и т. д. Вы получаете сообщение об ошибке, отсутствие результатов, неправильные результаты...? - person Martin R; 17.01.2014
comment
Я согласен, что должно работать отлично, и я не знаю, почему это не так. Сообщений об ошибках нет, я просто возвращаю пустой массив. Прежде чем вы спросите «да», между двумя наборами есть перекрывающиеся объекты. - person user3200440; 17.01.2014
comment
@user3200440: user3200440: Просто чтобы определить проблему: работает ли это, если вы извлекаете все объекты (без какого-либо предиката), а затем фильтруете извлеченный массив, используя указанный выше предикат? - person Martin R; 18.01.2014