Вы можете:
- загрузить новую базу данных с сервера
- сбросить весь контекст базовых данных (координатор хранилища, контексты управляемого объекта, управляемые объекты)
- замените старую базу данных новой
- попросите обновить интерфейс пользователя, чтобы отобразить новейшее содержимое: контекст Core Data должен перезагрузиться лениво
Но этот подход довольно опасен, так каквам нужно убедиться, что каждый объект Core Data в вашем приложении может быть сброшен.Кроме того, замена базы данных должна произойти сразу после сброса контекста, чтобы избежать состояния гонки.Если у вас есть потоки / блоки, обращающиеся к Базовым данным, это еще сложнее.
Лучшим подходом может быть обновление записей базы данных путем загрузки файла JSON, который содержит содержимое новой базы данных, удаление старых записей и вставкановые.Это также гарантирует, что вы можете обновить свою базовую схему данных в будущей версии приложения, не нарушая процесс обновления контента.А с помощью класса NSFetchResultsController
ваши представления таблиц или другие элементы пользовательского интерфейса могут даже автоматически обновляться с приятной анимацией при обновлении базы данных.
Если вам нужна пропускная способность, я использую протокольные буферы , которые намного более компактны, чем любой файл JSON или даже sqlite, и довольно просты в использовании.