Ответ 1
Кажется, что это работает нормально:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(ANY lists == %@)", myList];
Где myList является фактическим объектом List.
В моей модели Core Data у меня есть два объекта: List и Patient. Список имеет атрибут под названием "имя".
Список может иметь любое количество пациентов, и каждый пациент может принадлежать к любому количеству разных списков. Поэтому я установил отношения в списке, называемом "пациенты", который имеет отношение "обратное ко многим" к пациенту И отношение к пациенту, называемое "списками", которое имеет отношение "ко многим" к списку.
Я пытаюсь выяснить, как создать предикат, который выберет всех пациентов, принадлежащих к определенному имени списка.
Как я могу это сделать? Я никогда не использовал отношения раньше в Core Data.
Спасибо,
Кажется, что это работает нормально:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(ANY lists == %@)", myList];
Где myList является фактическим объектом List.
Для модели данных, например:
Список < - ↔ > Пациент,
вы можете найти все экземпляры пациента, принадлежащие списку с определенным именем, с запросом на выборку на объекте пациента, используя предикат вроде:
[NSPredicate predicateWithFormat:@"ANY lists.name LIKE[cd] %@", listName]
Предполагая, что listName
является экземпляром NSString
с нужным именем списка. LIKE[cd]
имеет нечувствительность к регистру и диакритическую чувствительность.
Похоже, что ваша модель данных такова:
Список ↔ Пациент
Я бы подумал, что если вы знаете конкретное имя списка, то вы знаете конкретный объект списка. Если это так, вы можете просто захватить пациентов, используя отношения "многие" от "Список к пациенту" - это набор объектов пациента. Например, если отношение "Список к пациенту" называется "пациенты":
NSSet *patientSet = listObject.patients;
Примечание. Для этого требуется создать подклассы для управляемых объектов, чтобы вы могли получить доступ к атрибутам и отношениям как свойствам ваших объектов.
Если вы знаете только имя списка по какой-либо причине и вы извлекаете объекты пациента, вы можете создать предикат, используя отношения "со многими" от "Пациент к списку" (предположим, что он называется "списки" и имя списка в строка с именем "listName" ):
NSPredicate *pred = [NSPredicate predicateWithFormat:@"ANY lists.name == %@",listName];