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