#iphone #core-data
#iPhone #core-data
Вопрос:
Прежде всего, я хочу показать, как я сделал это в SQL:
Таблица location и environment никогда не будет содержать более этих четырех строк. Каждый журнал может быть связан только с 4 строками.
Чего я не понимаю, так это как мне вообще начать писать код, который будет принимать все, что выбрал пользователь, на основе переключателей состояний и т.д. В моем пользовательском интерфейсе, и сохранять это?
Потому что, когда пользователь закончит, я хочу сохранить «запись журнала», и у записи журнала могут быть связанные с ней строки местоположения и среды. И что произойдет, когда пользователь, скажем, выберет все строки местоположения, четыре раза подряд …. добавляет ли он местоположение в location «entity» каждый раз? Получу ли я в итоге много дублированных данных? Я был бы признателен за любую помощь, которая может показать мне, как это сделать. Спасибо!
Комментарии:
1. У вас есть таблица соединений? Вы имеете в виду, что создали таблицу соединений вручную или использовали связи core data для указания отношения «многие ко многим»?
2. @deanWonbourne Я использовал Core Data, чтобы это управлялось за меня, но это был пример, если бы я должен был сделать это в SQL без Core Data.
Ответ №1:
Похоже, вам нужны три объекта. У вас будут объекты местоположения и среды, которые имеют любые необходимые им атрибуты, и объект журнала, который связан как со средой, так и с местоположением. Я думаю, вы спрашиваете, будут ли экземпляры Location и Environment, которые совпадают, дублироваться в хранилище core data, или несколько экземпляров журнала будут относиться к одним и тем же экземплярам Location и Environment. Это верно? Ответ: Это зависит от вас. Допустим, вы хотите сохранить экземпляр Location с определенным набором атрибутов. Вы могли бы сначала выполнить поиск объекта с точно таким набором атрибутов и связать его с вашим экземпляром журнала, или вы могли бы просто создать новый экземпляр Location и не беспокоиться о дублировании. Если вы храните миллионы таких записей журнала, первый план может сэкономить много места. Если вы сохраняете их не так часто, и особенно если пользователь может вернуться назад и изменить данные, связанные с экземпляром журнала, вы можете захотеть использовать отдельные экземпляры, даже если они совпадают.
Комментарии:
1. Спасибо за ответ. Итак, вы говорите, что любое местоположение / среда, сохраненные вместе с записью в журнале, будут дублироваться снова и снова, даже если у пользователя есть только 4 варианта на выбор?
2. Я говорю, что Core Data автоматически не конденсирует похожие объекты в один. Вам решать, как с этим справиться. Если у вас есть только n объектов возможного местоположения, может оказаться хорошей идеей выполнить поиск нужного объекта и связать его с вашим экземпляром журнала. Если вы создаете новый экземпляр Location каждый раз, когда пользователь вносит запись в журнал, вы будете получать отдельные копии.