Лучший способ «сбросить» стек Core Data?

Мое приложение должно быть в состоянии отключиться от сервера и подключиться к другому по своему усмотрению, что требует сбрасывания любого сохраняющегося хранилища. Проблема здесь в том, что освобождение «основного» контекста управляемых объектов означает любые объекты в нем, которые у меня возникают вокруг ошибки, что вызывает всевозможные неожиданные небольшие проблемы и сбои.

Есть ли лучший способ «сбросить» мои стек / управляемые объекты, заваленные вокруг программы, чем просто вызвать выпуск во всем в стеке Core Data?

Вам нужно закрыть стек Core Data сверху вниз.

  1. Убедитесь, что никакие управляемые объекты не сохраняются каким-либо объектом, кроме контекста управляемого объекта, например, убедитесь, что объекты не хранятся в массиве, принадлежащем контроллеру пользовательского интерфейса.
  2. Сохраните контекст управляемого объекта, чтобы очистить любые свободные концы.
  3. Полностью освободите контекст и запустите его. Контекст никогда не должен сохраняться более чем одним объектом, например делегатом приложения.
  4. Отправить removePersistentStore:error: координатору постоянного хранилища.
  5. Используйте стандартные операции с файлами для удаления фактического файла хранилища.

Изменение данных ядра как это «на лету» сложно, потому что Core Data – это не просто небольшая база данных, висящая со стороны приложения. Он предназначен для использования в качестве всего слоя модели приложений. Поскольку Apple действительно в дизайне Model-View-Controller, модель является фактическим ядром программы (следовательно, имя Core Data). Таким образом, вы не можете включить и выключить ее, как вы бы просто SQL-база данных ,

Возможно, вы захотите переосмыслить свой дизайн, чтобы вы могли менять серверы, не закрывая всю модель данных. Например, просто удалите все управляемые объекты, связанные с неиспользуемым сервером.

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

 [managedObjectContext reset]; 
  • viewController view не загружен
  • iOS - начальная загрузка больших объемов данных
  • coredata setFetchBatchSize
  • Coredata после обновления приложения
  • Перезагрузка просмотра таблицы с другого вида
  • Хранить NSArray NSNumber * как NSString в основных данных
  • Хранение изображений в основных данных, как очистить кеш?
  • Core Data не очищает внешние двоичные данные после удаления объектов?
  • сохранить JSON в виде строки в основных данных
  • CoreData: nil не является законным параметром NSManagedObjectContext
  • Предварительная заполнение основных данных путем копирования файла .sqlite из документов
  • Давайте будем гением компьютера.