NSPredicate основных данных: Возвращает все объекты, которые связаны с другим объектом, идентификатор которого отображается в данном массиве

#ios #swift #core-data #nspredicate

Вопрос:

Мой график объектов выглядит следующим образом

Серверы <—><—>> События

Каждая сущность события имеет необязательный идентификатор атрибута.

Событие может принадлежать только одному серверу, но сервер может быть связан со многими событиями

Учитывая массив идентификаторов событий [1, 2, 3]

Я хочу, чтобы все серверы, на которых есть событие, идентификатор которого отображается в данном массиве

Я пытался это сделать, но получил «не удается проанализировать строку формата»

NSPredicate(format: "SUBQUERY(events, $event, ANY $event.clientID in %@)", clientIDs as CVarArg)

Ответ №1:

Попробуйте добавить @count в свой подзапрос.

NSPredicate(format: "SUBQUERY(events, $event, ANY $event.clientID in %@).@count != 0", clientIDs as CVarArg)

Проверьте эти документы для небольшой справки.

Комментарии:

1. Спасибо! Это правильный ПОДЗАПРОС (…), возвращающий массив. Нам нужно проверить, соответствует ли его количество != 0, чтобы вернуть значение true или false, ожидаемое предикатом.