SwiftUI,CloudKit - 无法加载核心数据 NSPersistentCloudKitContainer

SwiftUI, CloudKit - Can't Load Core Data NSPersistentCloudKitContainer

我有一个使用核心数据完全开发的应用程序。既然完成了,我想要 添加 CloudKit 同步(就像我对其他应用所做的一样)。然而,当我 尝试这样做,loadPersistentStores 函数无法加载 CloudKit 持久存储。

我已添加 CloudKit 功能和后台模式远程通知。

标识符已在开发者网站上注册:

我有一个单独的 CoreDataManager class 用于数据函数 当地商店就好了:

class CoreDataManager: ObservableObject {

    static let instance = CoreDataManager()

    @Published var pubSortOrder: String = "lastName"
    //bunch more

    //let container: NSPersistentContainer
    let container: NSPersistentCloudKitContainer
    let context: NSManagedObjectContext

    private init() {
    
        //container = NSPersistentContainer(name: "ResLogCloud")
        container = NSPersistentCloudKitContainer(name: "ResLogCloud")
        container.loadPersistentStores { (description, error) in
            if let error = error {
                print("Error loading Core Data. \(error.localizedDescription)")
            }
        }
    
        context = container.viewContext
        //uncomment next for CloudKit container
        context.automaticallyMergesChangesFromParent = true
        context.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
    
    }//init

    //bunch of functions dealing with data

}//class

只是为了笑,我已经在 CloudKit 仪表板中重置了几次环境。

控制台错误只是说“加载核心数据时出错。发生核心数据错误。” 显然,这不是很有帮助。

我没主意了。任何指导将不胜感激。 Xcode13.2.1iOS15.

这很奇怪。我发现我已经将一个核心数据属性标记为非可选 但我没有提供默认值。一旦我提供了默认值 CloudKit 商店按预期工作。如您所料,这是一个相当复杂的调试 找到这个的过程。

有启动代码可用于查找额外的 Core Data 调试信息 - I 在这种情况下没有找到可以帮助我的人,尽管我相信有一个。为他人, 你可以从这里开始:

https://developer.apple.com/documentation/coredata/accessing_data_when_the_store_changes

同样,本地持久存储似乎并不关心这个非可选值,但是 持久的 CloudKit 商店做到了。