2012-03-14 2 views
0

Я задал вопрос некоторое время относительно миграции SQLite на основные данные и получил ответ, чтобы сохранить стойкие магазины отдельно, исходя из моей потребности в «Только чтение» магазин, и «Пользовательский магазин»:Основные данные: отдельные постоянные хранилища с несколькими контекстами или отдельные постоянные хранилища с одним контуром

Updating Application to use Core Data from previous double SQLite only persistent store

Я начала разработки этого приложения, и в данный момент я планирую создать 2 отдельные контексты из-за того, что я предвижу модель объектива только для чтения остается неизменной для будущих выпусков, в то время как пользовательская модель, вероятно, изменится. Таким образом, мне действительно нужно было бы только модифицировать пользовательскую объектную модель и продолжать отгружать приложение с одним и тем же хранилищем только для чтения.

Действительно ли это умный способ? Если да, то каковы некоторые препятствия, на которые я должен обратить внимание? Если нет, что было бы лучшей альтернативой?

+0

Может или не поможет, но недавно я увидел хороший пример [разделения постоянных магазинов] (http://cocoawithlove.com/2011/06/process-of-writing-ios-application.html). – rickster

ответ

2

Пока объекты в двух моделях не конфликтуют друг с другом, вы можете использовать обе модели вместе в том же контексте. Вы можете использовать метод +modelByMergingModels: для создания единой модели из двух или более моделей во время выполнения. Используйте эту новую модель для инициализации вашего постоянного координатора хранилища и добавьте этот PSC в свой контекст.

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

+0

Можете ли вы пояснить, что вы подразумеваете, убедившись, что «две модели не конфликтуют друг с другом?» – 5StringRyan

+0

@ 5StringRyan Я имею в виду, что они оба не пытаются определить объекты с одинаковыми именами. Если у вас есть объект под названием «Продукт» в одной модели, наличие другой сущности с тем же именем в другой модели, вероятно, является плохим. – Caleb

+0

Легкая миграция не будет работать, если вы используете '+ modelByMergingModels:' http://stackoverflow.com/questions/10940545/core-data-lightweight-migrations-and-multiple-core-data-model-files-xcdatamod/13852084# 13852084 –

Смежные вопросы