Как выбрать ресторан по его menuId? - PullRequest
0 голосов
/ 06 января 2012

Я настроил Основные данные в своем приложении с двумя сущностями: Ресторан и Меню. Есть около 30 или около того ресторанов и 6 меню. Одно меню может принадлежать нескольким ресторанам.

Однако у каждой сущности Ресторан есть поле menuId. Есть ли способ получить конкретную сущность меню, в соответствии с которой menuId сущности ресторана имеет?

У меня также проблема со значениями, которые хранятся более одного раза, даже если они одинаковы. Как я могу предотвратить это?

Я довольно новичок в данных Core, поэтому любые советы по передовым методам приветствуются!

Спасибо!

Ответы [ 2 ]

1 голос
/ 06 января 2012

Вы можете использовать NSFetchRequest для получения меню по их идентификатору, но на самом деле было бы лучше определить отношение от вашего объекта Restaurant к вашему объекту Menu (и наоборот).Внутренне, это почти то же самое, что и атрибут id вашего меню, но его гораздо удобнее использовать.

0 голосов
/ 06 января 2012

Вы придерживаетесь подхода к базе данных, основанного на таблицах и идентификаторах для связи этих таблиц.Это неправильно в Core Data, вы должны следовать подходу объектного графа, и CoreData преобразует его в соответствующую базу данных SQlite полностью прозрачным для вас способом.

Итак, учитывая сущности ° Ресторан "и" Меню ", высоздаст: - в объекте "Ресторан" отношение 1-ко-многим к "Меню", называемому "меню" - в объекте "Меню" отношение 1-ко-многим к "Ресторану", которое называется "рестораны"

Вам просто нужно добавить каждое меню ресторана в NSSet, соответствующее отношениям меню для данного меню, и наоборот. Как вы видите, таким образом вам не нужно заботиться об идентификаторах, а только об объекте.отношения.

Что касается повторяющихся данных, это зависит от вас. Обычно у вас должен быть способ определить уникальность объекта (например, название меню, название ресторана), а затем попытаться получить его изБазовые данные перед добавлением их в качестве нового объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...