Я только что решил ту же ошибку, когда использовал вычисляемое свойство для моего постоянного контейнера. Таким образом, каждый раз, когда приложение обращается к постоянному контейнеру / хранилищу, на диске создается новый экземпляр модели данных.
После того, как я изменил постоянный контейнер на свойство с отложенным хранением, проблема исчезла.
[обновление]
В настоящее время я использую отдельный класс для основного стека данных, где используется синглтон, как показано ниже:
class DataCtrl : NSObject {
static shared = DateCtrl()
var container: NSPersistentContainer?
private override init() {
container = NSPersistentContainer(name: "dataModelName")
}
func loadStore (completionHandler: @escaping () -> ()) {
self.container?.loadPersisentStores() {
desc, err in ...
completionHandler
}
}
}
Тогда я могу удобно использовать вычисляемое свойство в расширении tableViewController:
var container : persistentContainer { return DateCtrl.shared.container }
Конечно, вам нужно вызвать func loadStore в блоке AppDelegate didFinishLaunchingWithOptions, чтобы сначала загрузить постоянное хранилище, где с помощью DispatchGroup () в завершениеHandler для управления загрузкой модели данных контроллера первого представления.