2014-02-04 2 views
0

Как регулярное задание безопасности в моем приложении, я должен сохранить свой NSManagedObjectContext с помощью метода SaveAs ..., который называется migratePersistentStore:toURL:options:withType:error:. Однако этот метод удаляет хранилище от координатора и добавляет новый магазин. Это фатально, потому что мой полный пользовательский интерфейс основан на объектах, загруженных из старого хранилища. Перезагрузка пользовательского интерфейса не является вариантом, поскольку пользователь может работать в пределах пользовательского интерфейса и в настоящее время редактировать объекты, загруженные из старого хранилища.Можно ли безопасно открыть NSPsistentStore дважды?

Моя идея - создать второй стек координатора, moc и т. Д., И пусть этот дубликат выполнит миграцию. Можно ли безопасно открыть NSPersistentStore (readOnly) вторым координатором? Я думаю, что нет. Я не понимаю, почему Apple не добавила возможность сохранить исходный магазин после миграции.

ответ

0

Если в вашем магазине есть магазин SQLite, тогда да, вы можете открыть как можно больше NSPersistentStoreCoordinator экземпляров. Если вы не используете магазин SQLite, я бы не рекомендовал его.

Однако, если вы выполняете резервное копирование, есть ли причина, по которой вы не копируете файл, используя вместо этого NSFileManager? Должно быть значительно быстрее, чем миграция. Достаточно быстро, чтобы вы могли безопасно заблокировать хранилище во время копирования.

+0

Мне нужно избавиться от метаданных iCloud, и я хотел бы иметь все в одном файле (режим ведения журнала). Поэтому я использовал миграцию. Как бы вы пошли? – Norbert

+0

Взгляните на это приложение примера, которое включает в себя переключатель для создания резервной копии при запуске приложения или при его активации. Не уверен, что он добавляет ничего полезного вашему подходу, но вы никогда не знаете. http://ossh.com.au/design-and-technology/software-development/sample-library-style-ios-core-data-app-with-icloud-integration/ –

+0

@Norbert Fair достаточно, затем выполните миграцию имеет смысл, и мой ответ стоит. Вы можете определенно открыть второй основной стек данных для обработки резервной копии, и это никак не повлияет на ваш стек пользовательского интерфейса. –

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