'У этого NSPersistentStoreCoordinator нет постоянных хранилищ (неизвестно). Он не может выполнить операцию сохранения.'
Я получаю сбой в "try save()" в этой строке.
extension NSManagedObjectContext {
/// Only save if `hasChanges`
func saveIfNeeded() throws {
guard hasChanges else {
return
}
do {
try save()
} catch {
assertionFailure("Failed to save main context: \(error)")
throw error
}
}
/// Calls `saveIfNeeded` and then calls `saveIfNeededUpToRootContext()` on the `parentContext`.
func saveIfNeededUpToRootContext() throws {
try saveIfNeeded()
try parent?.saveIfNeededUpToRootContext()
}
}
В appdelegte, appDidFinishLaunching: я написал:
defer {
do {
try DataStore.mainContext.saveIfNeededUpToRootContext()
} catch {
log("Failed to save \"App Feedback\" to Core Data: \(error)")
}
}
В основном, вызов вышеупомянутого метода: saveIfNeededUpToRootContext.
Ниже приведена инициализация хранилища данных:
fileprivate let coordinator: NSPersistentStoreCoordinator
let mainContext: NSManagedObjectContext
var isLoaded = false
init() {
guard let model = NSManagedObjectModel.mergedModel(from: nil) else {
fatalError("No models in main bundle")
}
coordinator = NSPersistentStoreCoordinator(managedObjectModel: model)
coordinator.name = "main_coordinator"
mainContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
mainContext.name = "main_context"
mainContext.persistentStoreCoordinator = coordinator
mainContext.undoManager = nil
let center = NotificationCenter.default
center.addObserver(self, selector: #selector(save), name: NSNotification.Name.UIApplicationWillResignActive, object: nil)
center.addObserver(self, selector: #selector(save), name: NSNotification.Name.UIApplicationDidEnterBackground, object: nil)
}