Базовые данные many-many отношения - вопрос о Предикате

В моей Базовой Модели данных у меня есть два объекта: Список и Пациент. Список имеет атрибут, названный 'именем'.

Список может иметь любое число Пациентов, и каждый Пациент может принадлежать любому количеству различных списков. Я поэтому установил отношения в Списке, названном 'пациентами', который имеет инверсию к - многие отношения к Пациенту И отношения на Пациенте, названном 'списками', который имеет к - многие отношения к Списку.

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

Как я пошел бы об этом? Я никогда не использовал отношения прежде в Базовых Данных.

Спасибо,

21
задан Peter Hosey 26 February 2010 в 14:46
поделиться

3 ответа

Кажется, это работает нормально:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(ANY lists == %@)", myList];

Где myList - это реальный объект List.

16
ответ дан 29 November 2019 в 20:17
поделиться

Похоже, ваша модель данных такова:

Список <<-->> Пациент

Я бы подумал, что если вы знаете конкретную имя списка, то вы знаете конкретный объект списка. Если это так, вы можете просто захватить пациентов, используя отношение ко многим от списка к пациенту - это набор объектов пациентов. Например, если отношение «Список к пациенту» названо «пациенты»:

NSSet *patientSet = listObject.patients;

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

Если по какой-то причине вам известно только имя списка и вы извлекаете объекты пациентов, то вы можете создать предикат, используя отношение ко многим от пациента к списку (предположим, что он называется «списки» и имя списка в строка с именем "listName"):

NSPredicate *pred = [NSPredicate predicateWithFormat:@"ANY lists.name == %@",listName];
11
ответ дан 29 November 2019 в 20:17
поделиться

Для такой модели данных, как:

Список <<——>> Пациент,

вы можете найти все экземпляры Пациентов, которые принадлежат к списку с определенным именем с запрос на выборку объекта «Пациент» с использованием предиката, например:

[NSPredicate predicateWithFormat:@"ANY lists.name LIKE[cd] %@", listName]

при условии, что listName является экземпляром NSString с желаемым именем списка. LIKE [cd] выполняет сравнение без учета регистра и без учета диакритических знаков.

19
ответ дан 29 November 2019 в 20:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: