“此 NSPersistentStoreCoordinator 没有持久性存储(未知)”

问题描述 投票:0回答:1

我正在执行任务管理器应用程序的最后一步:让任务在设备之间同步。但是,我收到错误“此 NSPercientStoreCoordinator 没有持久存储(未知)。它无法执行保存操作。”这个错误到底意味着什么?我的容器已初始化,因此它应该有一个持久存储,对吧?我确信我还启用了所有正确的功能。这是我的数据控制器的代码:

import CoreData
import Foundation

class DataController: ObservableObject {
    let container = NSPersistentCloudKitContainer(name: "TaskDataModel")
    
    init() {
        guard let description = container.persistentStoreDescriptions.first else {
            fatalError("Container descriptions not loaded")
        }
        description.setOption(true as NSNumber, forKey: NSPersistentHistoryTrackingKey)
        container.viewContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
        container.viewContext.automaticallyMergesChangesFromParent = true
        container.loadPersistentStores { description, error in
            if let error = error {
                print("Core Data failed to load: \(error.localizedDescription)")
            }
        }
    }
}

这是 TaskManMain:

@main
struct TaskManApp: App {
    @StateObject private var dataController = DataController()
    
    var body: some Scene {
        WindowGroup {
            MainView()
                .environment(\.managedObjectContext, dataController.container.viewContext)
        }
    }
}

如果大家有兴趣,这里是完整的存储库: https://github.com/aabagdi/TaskMan

ios swift core-data cloudkit
1个回答
0
投票

我不知道你是否有和我一样的问题,但我设法通过更好的错误处理找到了我的确切问题。

class DataController: ObservableObject {
    let container: NSPersistentCloudKitContainer = {
        let container = NSPersistentCloudKitContainer(name: "TaskDataModel")
        container.viewContext.mergePolicy = NSMergePolicy.mergeByPropertyObjectTrump
        container.viewContext.automaticallyMergesChangesFromParent = true
        container.loadPersistentStores(completionHandler: { (storeDescription, error) in
            if let error = error as NSError? {
                fatalError("Unresolved error \(error), \(error.userInfo)")
            }
        })

        return container
    }()
    
}

这给了我破坏我的代码的确切错误。在我的情况下,我对我的实体之一有自定义约束,并且您不能将唯一约束与 NSPersistentCloudKitContainer 一起使用。 我终于设法通过创建一个函数找到了解决方法。 希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.