【发布时间】:2021-12-08 14:22:15
【问题描述】:
大约 2 年前,我在这里 (Core data and iCloud sync not working in live App) 询问了我在 iCloud 上同步核心数据时遇到的问题。将架构部署到生产环境后,问题已得到解决。
到目前为止没有问题,但几个月前我注意到我的应用有时会同步,有时不会。
现在的问题是,根本不同步,在模拟器上工作正常,我打开 2 台设备,它们同步没有问题。
上线(从 AppStore 下载应用程序),使用 2 部 iPhone,同一个 iCloud 帐户,99% 的时间不会同步。
例如:
- 从两部 iPhone 上删除应用程序
- 从 AppStore 下载应用程序
- 应用程序加载已存储在 iCloud 上的记录,我可以在两部 iPhone 上看到相同的数据
- 在 iPhone A 上添加新记录,iPhone B 收到新数据... ok
- 在任何 iPhone 上添加第二条记录,但什么都没有,从这里开始,没有 新数据已同步
- 要查看第 4 步中的数据是否已保存在 iCloud 上,请再次从两部手机中删除应用程序并重新开始,在第 3 步中,数据已加载,但第 4 步中的新记录丢失。
有什么想法吗?
AppDelegate.swift
lazy var persistentContainer: NSPersistentCloudKitContainer = {
let container = NSPersistentCloudKitContainer(name: "whatever")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
container.viewContext.automaticallyMergesChangesFromParent = true
container.viewContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
return container
}()
func saveContext () {
let context = persistentContainer.viewContext
if context.hasChanges {
do {
try context.save()
} catch {
let nserror = error as NSError
fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
}
}
}
【问题讨论】:
-
您应该打开CoreData调试并查找错误。一些错误会阻止与 iCloud 同步。请参阅此页面中的调试:developer.apple.com/documentation/coredata/…
-
将尝试在这里发表评论,谢谢。
标签: swift core-data icloud cloudkit