Вопрос

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

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

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

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

СПАСИБО!

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top