'У этого 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)
}

0 ответов

Другие вопросы по тегам