Я полностью на этом и у меня нет идей уже неделю.
У меня есть стек CoreData с несколькими координаторами и управляемыми контекстами, и я пытаюсь реализовать функцию logout в приложении.
Табличные представления, которые взаимодействуют с CoreData, находятся внутри TabBarController, и есть переходящие (т.е. регистрация и вход в систему) NavigationControllers и ViewController, которые ведут к нему.
То, что я пытаюсь реализовать, - это выход из системы (т. Е. Откат к начальному ViewController. До сих пор я пытался - безрезультатно:
- сброс () каждого управляемогоObjectContext по отдельности
- каждая возможная комбинация tableView.beginUpdates (), tableView.endUpdates (), tableView.reloadData (), frc.performFetch ()
- Удалить каждую сущность в каждом управляемом объекте, а затем сбросить () каждый управляемый объект по отдельности
- установить для tableView, fetchedResultsController делегатов и источника данных значение nil, а затем на self для viewDidLoad ()
- Наличие NSNotification, которое срабатывает непосредственно перед выходом из системы - удаление всего в CoreData и его сохранение, эффективное обновление и очисткатаблица.
- намного больше
Есть ли способ полностью сбросить CoreData, чтобы, когда пользователь откатывался к начальному ViewController и перезапускал весьпроцесс, который я не получу
Серьезная ошибка приложения. Исключительная ситуация при Core Daизменить обработку.Обычно это ошибка в наблюдателе NSManagedObjectContextObjectsDidChangeNotification.попытаться вставить строку 9 в раздел 0, но в разделе 0 после обновления с userInfo (null)
или в случае, если я очистил таблицу с помощью уведомлений, есть только 9 строк:
Серьезная ошибка приложения.Исключение было обнаружено во время обработки изменений Core Data.Обычно это ошибка в наблюдателе NSManagedObjectContextObjectsDidChangeNotification.попытка вставить строку 9 в раздел 0, но в разделе 0 после обновления только userInfo (null) * только 0 строк
CoreData работает просто отлично если я выйду из системы, закройте приложение и перезапустите.Нет ошибок таким образом.Это заставляет меня думать, что есть способ полностью сбросить CoreData (и любые связанные с ним tableViews, fetchedResultsControllers) или сбросить в первоначальное состояние при размотке на начальный ViewController.
или я должен просто дублировать раскадровку и иметь отдельный набор встроенных контроллеров viewController только для выхода из системы, чтобы CoreData не реинициализировался?
Есть идеи?Благодарю.