2009-10-26 8 views
3

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

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

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

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

СПАСИБО!

ответ

6

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

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

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

Вы можете узнать больше о категориях в Objective-C Programming Language guide на АЦП.

Смежные вопросы