Это объясняется в разделе «Создание модели управляемых объектов» из учебника Apple по Core Data Utility .Как правило, если у вас есть ссылка на модель управляемого объекта, вы можете использовать классы NSEntityDescription
и NSAttributeDescription
для настройки объектов и их атрибутов в модели управляемого объекта.
Обратите внимание, однако, что в большинстве случаев после изменения модели управляемого объекта она больше не будет совместима с существующими постоянными хранилищами данных, а это означает, что вам придется переносить данные из старого постоянного хранилища в свое.новый.Это определенно не то, что нужно воспринимать легкомысленно.
Конечно, как уже упоминалось в комментариях, Core Data также может автоматически переносить данные, процесс, известный как облегченная миграция .В целом, однако, для этого
Базовые данные должны иметь возможность самостоятельно находить модели управляемого объекта источника и назначения во время выполнения.(Базовые данные выполняют поиск в пакетах, возвращаемых методами NSBundle
* allBundles
и allFrameworks
.) Затем они должны проанализировать изменения схемы для постоянных сущностей и свойств и сгенерировать выведенную модель сопоставления.Чтобы базовые данные могли это сделать, изменения должны соответствовать очевидному шаблону миграции, например:
- Простое добавление нового атрибута
- Необязательный атрибут становится необязательным
- Необязательный атрибут становится необязательным и задает значение по умолчанию
Подходит ли это для вашего варианта использования или вы хотите разрешить пользователям изменять управляемыйобъектная модель таким образом, чтобы сделать легкую миграцию невозможной?
В любом случае я настоятельно рекомендую прочитать следующие документы, прежде чем разрешить пользователям изменять модели базовых данных.