Основные классы данных против модели - PullRequest
3 голосов
/ 26 октября 2009

Недавно я начал программировать в Objective-C, и сейчас я изучаю базовые данные. Однако я не совсем понимаю, что именно определяет модель в Core Data.

Вот что я имею в виду: скажем, я создаю сущность с некоторым набором атрибутов, используя построитель графической модели. Затем я создаю код Xcode для соответствующего класса. Далее я хочу создать свойство в классе, которое будет использоваться только во время выполнения и не должно быть сохранено или извлечено Core Data. Итак, я добавляю переменную и соответствующее свойство к классу (синтезирую его в реализации)

Новое свойство не определено в построителе модели, но оно определено в классе, производном от NSManagedObject. Как это обрабатывается в Core Data? Свойства, перечисленные в классе, определяют атрибуты в «модели» или только атрибуты, определенные в конструкторе моделей, определяют модель?

Точно так же я хотел добавить в файл класса свойство на основе перечисления, которое при получении или установке получает доступ или изменяет атрибут NSNumber в модели. Могу ли я сделать это без Core Data, рассматривая свойство как атрибут, который будет сохранен и извлечен?

СПАСИБО!

1 Ответ

6 голосов
/ 28 октября 2009

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

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

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

Подробнее о категориях см. В руководстве по языку программирования Objective-C на АЦП.

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