Cloudkit + 核心数据不同步
Posted
技术标签:
【中文标题】Cloudkit + 核心数据不同步【英文标题】:Cloudkit + Core Data not synching 【发布时间】:2020-07-13 15:33:26 【问题描述】:我有一个 Core Data + Couldkit 应用程序,其中在其他设备上所做的任何更改都不会同步。我不得不再次调用 fetch 方法刷新数据。对实体的关系进行更改,例如将对象添加到 NSManagedObject 关系集。然后我使用谓词获取对象,然后仅从关系(NSSet)中填充表视图中的数据。
即使我在另一个视图控制器中添加数据,更改也不会反映在我显示添加的数据的父控制器中。我必须添加一个通知观察者才能完成这项工作并再次获取数据。
我什至在 AppDelegate 中添加了必要的行,
let container = NSPersistentCloudKitContainer(name: "myappcontainername")
container.viewContext.automaticallyMergesChangesFromParent = true
以下是CoreData修改后的日志,
CoreData+CloudKit: -[NSCloudKitMirroringDelegate finishedAutomatedRequestWithResult:](2119): Finished request '<NSCloudKitMirroringExportRequest: 0x6> -UUID' with result: <NSCloudKitMirroringResult: 0x> success: 1 madeChanges: 1 error: (null)
这意味着我的更改已与 Cloudkit 同步。
我还应该做些什么来完成这项工作?
【问题讨论】:
【参考方案1】:你是这样设置你的容器的吗?
let options = NSPersistentCloudKitContainerOptions(containerIdentifier: id)
let description = container.persistentStoreDescriptions.first
description?.cloudKitContainerOptions = options
description?.setOption(true as NSNumber, forKey: NSPersistentHistoryTrackingKey)
description?.setOption(true as NSNumber, forKey: NSPersistentStoreRemoteChangeNotificationPostOptionKey)
【讨论】:
不。我只是通过检查 Tickbox for use cloud kit 使用了样板代码。我从 Apple 提供的示例中复制了相同的代码,它可以工作。仍在弄清楚我的代码到底出了什么问题。这与现有的样板代码有何不同?以上是关于Cloudkit + 核心数据不同步的主要内容,如果未能解决你的问题,请参考以下文章
iOS 上的 CloudKit + CoreData 和 watchOS 同步不起作用
如何在 Swift 中将 Core Data 与 Cloudkit 和许多设备同步
App 如何根据需要动态为 CoreData 开启 CloudKit 云同步功能
App 如何根据需要动态为 CoreData 开启 CloudKit 云同步功能
CloudKit fetchRecordChangesOperation 给出“AppDefaultZone 不支持同步语义”