我正在使用 SwiftUI 开发一个应用程序,并使用仅针对 iOS 13 的 MVVM 架构进行组合。我想实现设备之间的数据同步并使用 CloudKit 框架进行共享。如何合并 CloudKit 框架以在我的项目中使用?有什么可以对 CloudKit 操作执行的操作来使用 Combine 吗?
最佳答案
CloudKit API 很大程度上基于完成回调(根据 CloudKit Tips and Tricks ),但尚未为任何特定发布者设置(当前 - 从 iOS 13.3 开始)。所以你想要的任何东西,你都需要自己包装底层 API,创建你自己的自定义发布者。
使用Combine 包装异步调用的最直接方法可能是使用Future 构建您自己的发布者。出版商,可能还有 Deferred发布者,取决于您希望它如何 react 。这与您可能用于将任何 async-API 制作成发布者的 API 结构相同。
在 Using Combine 中有一个这样做的例子(带有来源)同款wrapping an asynchronous call with a Future to create a one-shot publisher和 creating a repeating publisher by wrapping a delegate based API .
作为一般模式,我的目标是让发布者接收与您想要创建的 UI 体验相关的任何更新。这样做的很多过程都涉及选择要封装和包装的内容(错误处理、类型操作以及从底层数据更改中确定要呈现的内容)。
关于ios - Cloudkit 与结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59426092/