Я относительно новичок в программировании iOS и Core Data, поэтому, пожалуйста, простите меня, если это глупый вопрос. В моем проекте у меня есть две сущности. Сущность (1) называется «Врач», сущность (2) — «Пациент». Отношения между врачом и пациентом называются «пациенты». Обратное называется «доктор». У меня есть отношение один ко многим между врачом и пациентом. Сущности были разделены на подклассы. У меня есть контроллер корневого представления, отображающий имена врачей. Я хочу иметь возможность выбирать ячейку врача и отображать его пациентов на контроллере просмотра segued. Его пациенты содержатся в NSSet. Я тут запутался. Должен ли я передавать этот NSSet в коде перехода или использовать предикат в запросе на выборку для получения только подходящих имен пациентов? Мы будем очень признательны за любой пример кода, который вы могли бы предоставить.
Как правильно закодировать детализацию основных данных с помощью NSSet
Ответы (1)
Просто передайте объект Doctor
, полученный, когда пользователь коснулся ячейки, вашему контроллеру деталей. Затем в подробном контроллере используйте doctor.patients
(NSSet). Это самый простой вариант, и он будет хорошо работать, если вы не вносите никаких изменений в данные. Вероятно, вы отображаете пациентов в виде таблицы, поэтому вам нужно будет использовать NSSortDescriptor
для организации пациентов перед их отображением (тогда они будут в массиве, и вы используете objectAtIndex:
).
Если вы собираетесь изменить данные, они все равно будут работать, но вам нужно каким-то образом узнать об изменении, чтобы вы могли обновить пользовательский интерфейс.
Если у вас уже есть полученный контроллер результатов, это нормально, и он будет отслеживать изменения за вас. В этом случае используйте doctor
в формате предиката:
[NSPredicate predicateWithFormat:@"doctor = %@", self.doctor];
В любом случае передайте объект доктора новому контроллеру представления.