Nano Hash - криптовалюты, майнинг, программирование

Настроить базовую модель данных во время выполнения?

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

спасибо матчи

Ps: это приложение для Mac OS!


Ответы:


1

Это объясняется в разделе "Создание управляемой объектной модели" из Учебное пособие по работе с базовыми данными. Как правило, если у вас есть ссылка на управляемую объектную модель, вы можете использовать NSEntityDescription и NSAttributeDescription для настройки сущностей и их атрибутов в управляемой объектной модели.

Однако обратите внимание, что в большинстве случаев после изменения управляемой объектной модели она больше не будет совместима с существующими постоянными хранилищами данных, а это означает, что вам придется перенести данные из старого постоянного хранилища в новое. Это определенно не попытка, которую следует воспринимать легкомысленно.

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

Core Data должна иметь возможность самостоятельно находить исходную и конечную управляемые объектные модели во время выполнения. (Core Data ищет пакеты, возвращаемые методами allBundles и allFrameworks NSBundle.) Затем он должен проанализировать изменения схемы в постоянных объектах и ​​свойствах и сгенерировать предполагаемую модель сопоставления. Чтобы Core Data мог это сделать, изменения должны соответствовать очевидному шаблону миграции, например:

  • Простое добавление нового атрибута
  • Необязательный атрибут становится необязательным
  • Необязательный атрибут становится необязательным и определяет значение по умолчанию.

Соответствует ли это вашему варианту использования или вы хотите разрешить своим пользователям изменять модель управляемых объектов таким образом, чтобы упрощенная миграция была невозможна?

В любом случае, я настоятельно рекомендую вам прочитать следующие документы, прежде чем вы попытаетесь разрешить своим пользователям изменять модели Core Data.

16.06.2011
  • Для простых мутаций модели Core Data автоматически выведет сопоставление миграции, вы даже можете сохранить измененную модель пользователя на диске, поскольку NSManagedObjectModel реализует NSCoding. 17.06.2011
  • @matchi Это ответило на твой вопрос? 21.07.2011

  • 2

    См. справочную страницу NSManagedObjectModel...

    Управляемые объектные модели доступны для редактирования до тех пор, пока они не будут использованы диспетчером объектных графов... Однако после того, как модель используется, ее нельзя изменять...

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

    16.06.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..