Лучший способ «сбросить» стек Core Data?
Мое приложение должно быть в состоянии отключиться от сервера и подключиться к другому по своему усмотрению, что требует сбрасывания любого сохраняющегося хранилища. Проблема здесь в том, что освобождение «основного» контекста управляемых объектов означает любые объекты в нем, которые у меня возникают вокруг ошибки, что вызывает всевозможные неожиданные небольшие проблемы и сбои.
Есть ли лучший способ «сбросить» мои стек / управляемые объекты, заваленные вокруг программы, чем просто вызвать выпуск во всем в стеке Core Data?
- Core Data удаляет последнюю запись
- Можно ли «заставить» приложение принять новую версию модели, даже если это означает перезапись существующей?
- Примитивные методы доступа Core Data, применимые для iPhone?
- Вставить 50 объектов в таблицу CoreData
- Основные данные продолжают создавать сохраненные документы ... папки
- Как выполнить перенос основных данных, как я могу переносить старые значения из хранилища источников из другого объекта?
- Попытка разработать Core Data Model для приложения для воспроизведения звука в iOS
- Почему я вижу эту ошибку при изменении атрибута Core Data от Integer 16 до String?
- Как одна из них может превратиться в NSManagedObjectID в willTurnIntoFault?
- Основные данные iOS «Объединение» двух «таблиц»
- Настройка сущности для данных таблицы
- Попытка сохранить широту и долготу в отношении данных Core приводит к плохому доступу
- Из UIManagedDocument в традиционный стек Core Data
Вам нужно закрыть стек Core Data сверху вниз.
- Убедитесь, что никакие управляемые объекты не сохраняются каким-либо объектом, кроме контекста управляемого объекта, например, убедитесь, что объекты не хранятся в массиве, принадлежащем контроллеру пользовательского интерфейса.
- Сохраните контекст управляемого объекта, чтобы очистить любые свободные концы.
- Полностью освободите контекст и запустите его. Контекст никогда не должен сохраняться более чем одним объектом, например делегатом приложения.
- Отправить
removePersistentStore:error:
координатору постоянного хранилища. - Используйте стандартные операции с файлами для удаления фактического файла хранилища.
Изменение данных ядра как это «на лету» сложно, потому что Core Data – это не просто небольшая база данных, висящая со стороны приложения. Он предназначен для использования в качестве всего слоя модели приложений. Поскольку Apple действительно в дизайне Model-View-Controller, модель является фактическим ядром программы (следовательно, имя Core Data). Таким образом, вы не можете включить и выключить ее, как вы бы просто SQL-база данных ,
Возможно, вы захотите переосмыслить свой дизайн, чтобы вы могли менять серверы, не закрывая всю модель данных. Например, просто удалите все управляемые объекты, связанные с неиспользуемым сервером.
Если вы имеете в виду, что хотите уничтожить все объекты, чтобы они снова были извлечены из вашего постоянного хранилища,
[managedObjectContext reset];