首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwiftUI,CloudKit -无法加载核心数据NSPersistentCloudKitContainer

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

Stack Overflow用户
提问于 2022-01-13 02:44:26
回答 1查看 292关注 0票数 0

我有一个充分开发的应用程序使用核心数据。现在它已经完成了,我想添加CloudKit同步(就像我对其他应用程序所做的那样)。但是,当我尝试这样做时,loadPersistentStores函数无法加载CloudKit持久存储。

我增加了CloudKit功能和后台模式远程通知。

标识符在开发人员站点上注册:

我有一个用于数据函数的单例CoreDataManager类,它可以很好地与本地存储一起工作:

代码语言:javascript
复制
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仪表板上重置了几次环境。

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

我没有主意了。如有任何指导,将不胜感激。Xcode 13.2.1 iOS 15。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-14 00:19:45

这太奇怪了。我发现我将一个Core数据属性标记为非可选属性,但我没有提供默认值。一旦我提供了默认值,CloudKit存储就像预期的那样工作。正如您所预期的,找到这一点是一个相当复杂的调试过程。

有一些启动代码可以用来查找额外的核心数据调试信息--在这种情况下,我没有找到一个来帮助我,尽管我相信有一个。对于其他人,你可以从这里开始:

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

同样,本地持久存储似乎并不关心这个非可选值,但持久性CloudKit存储却关心这个值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70690823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档