如何解决让 NSPersistentCloudKitContainer 在设备之间同步的问题SwiftUI、iOS
我已经使用 NSPersistentCloudKitContainer 设置了我的核心数据模型:
struct PersistenceController {
static let shared = PersistenceController()
let container: NSPersistentCloudKitContainer
init(inMemory: Bool = false) {
container = NSPersistentCloudKitContainer(name: "LearningCloudKit")
if inMemory {
container.persistentStoreDescriptions.first!.url = URL(fileURLWithPath: "/dev/null")
}
container.loadPersistentStores(completionHandler: { (storeDescription,error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error),\(error.userInfo)")
}
})
}
}
这几乎是我使用 CoreData 和 CloudKit 创建新项目时 Xcode 呈现的标准内容。
呈现数据的视图由
馈送 @Environment(\.managedObjectContext) private var viewContext
@FetchRequest(
sortDescriptors: [NSSortDescriptor(keyPath: \Item.timestamp,ascending: false)],animation: .default)
private var items: FetchedResults<Item>
我的设备之间的同步在某种程度上起作用,但是当我将新数据输入到一台设备时,需要超过 15 分钟才能显示在另一台设备上。不知道,有时直到我强制关闭应用程序并重新启动它才会到达。有时我必须在一台设备上输入数据并强制关闭才能查看其他设备的数据。
我已启用远程通知、CloudKit 和我的容器。我已经使用 CloudKit 仪表板检查过更改上传到云中的速度非常快。它们似乎没有那么快下载到设备上。
我还需要做什么才能使其正常工作?就像在一个设备中输入数据一样,不到一分钟它就会出现在另一台设备上。也许是后台服务?
解决方法
天哪。我自己找到了答案。在最后的 PersistenceController 中,我添加了:
container.viewContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
container.viewContext.automaticallyMergesChangesFromParent = true
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。