Я хочу модель, которая может быть настроена пользователем. Возможно ли это с базовыми данными или есть лучшие решения?
спасибо матчи
Ps: это приложение для Mac OS!
Я хочу модель, которая может быть настроена пользователем. Возможно ли это с базовыми данными или есть лучшие решения?
спасибо матчи
Ps: это приложение для Mac OS!
Это объясняется в разделе "Создание управляемой объектной модели" из Учебное пособие по работе с базовыми данными. Как правило, если у вас есть ссылка на управляемую объектную модель, вы можете использовать NSEntityDescription
и NSAttributeDescription
для настройки сущностей и их атрибутов в управляемой объектной модели.
Однако обратите внимание, что в большинстве случаев после изменения управляемой объектной модели она больше не будет совместима с существующими постоянными хранилищами данных, а это означает, что вам придется перенести данные из старого постоянного хранилища в новое. Это определенно не попытка, которую следует воспринимать легкомысленно.
Конечно, как упоминалось в комментариях, Core Data также может автоматически переносить данные — процесс, известный как облегченная миграция. В общем, чтобы сделать это
Core Data должна иметь возможность самостоятельно находить исходную и конечную управляемые объектные модели во время выполнения. (Core Data ищет пакеты, возвращаемые методами
allBundles
иallFrameworks
NSBundle
.) Затем он должен проанализировать изменения схемы в постоянных объектах и свойствах и сгенерировать предполагаемую модель сопоставления. Чтобы Core Data мог это сделать, изменения должны соответствовать очевидному шаблону миграции, например:
- Простое добавление нового атрибута
- Необязательный атрибут становится необязательным
- Необязательный атрибут становится необязательным и определяет значение по умолчанию.
Соответствует ли это вашему варианту использования или вы хотите разрешить своим пользователям изменять модель управляемых объектов таким образом, чтобы упрощенная миграция была невозможна?
В любом случае, я настоятельно рекомендую вам прочитать следующие документы, прежде чем вы попытаетесь разрешить своим пользователям изменять модели Core Data.
См. справочную страницу NSManagedObjectModel...
Управляемые объектные модели доступны для редактирования до тех пор, пока они не будут использованы диспетчером объектных графов... Однако после того, как модель используется, ее нельзя изменять...
Я бы сказал, что это определенно продвинутая тема Core Data (и сама Core Data уже довольно продвинутая тема), к которой нельзя подходить легкомысленно. Я не уверен, что любые данные, уже хранящиеся в хранилище данных, будут полезны (или даже пригодны для использования), если вы позволите пользователю изменять модель.