Как динамически создать Entity в Objective-C? - PullRequest
3 голосов
/ 30 ноября 2010

Я создаю приложение для iPad, где мне нужен пользователь для динамического создания сущности. У меня уже есть 3 объекта, которые использует программа.
Не могли бы вы помочь мне с кодом, как это сделать?

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

Ответы [ 2 ]

2 голосов
/ 30 ноября 2010

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

У вас есть варианты:

Во-первых, вы уверены, что вам действительно нужен новый объект?Люди, начинающие с Core Data, часто ошибочно принимают сущности за управляемые объекты.Объекты относятся к управляемым объектам, а классы - к экземплярам.Объекты - это абстракции, используемые для создания графа объектов.Они на самом деле не содержат данных.Времена, когда вам нужны новые сущности, очень и очень редки.

Во-вторых, если вам нужен какой-то динамический объект, обычно лучше разложить динамический объект на многочисленные фиксированные объекты, а затем использовать отношения для создания виртуального объекта.Например, вам нужна динамическая личность «сущность», поэтому вы создаете в модели несколько сущностей, каждая из которых содержит один атрибут личности.У вас может быть объект Field, который будет иметь атрибут fieldName, а затем атрибут fieldValue.Затем имейте фактическую сущность Person, у которой нет атрибутов, а есть только отношения с необходимыми Field объектамиВы можете добавить любые поля, необходимые любому человеку, а затем воссоздать объект виртуального человека, пройдя отношения к его полям.

Я скорее сомневаюсь, что вам нужна такая гибкость.Такая необходимость очень редка.Я бы сделал шаг назад и увидел бы, какие именно динамические данные, по вашему мнению, могут понадобиться пользователю.

2 голосов
/ 30 ноября 2010

Это правильно - вы создадите массив объектов NSEntityDescription, а затем вызовете setEntities: для новой модели управляемых объектов.Затем, наконец, вы объедините эту модель со встроенной моделью.

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

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