Cloudkit 与结合

Moh*_*siq 5 ios swift cloudkit swiftui combine

我正在使用 SwiftUI 开发一个应用程序,并使用仅针对 iOS 13 的 MVVM 架构进行组合。我想实现设备之间的数据同步并使用 CloudKit 框架进行共享。如何合并 CloudKit 框架以在我的项目中使用?有什么可以对 CloudKit 操作执行的操作来使用 Combine 吗?

hec*_*ckj 8

CloudKit API 很大程度上基于完成回调(根据CloudKit Tips and Tricks),但尚未为任何特定发布者设置(当前 - 从 iOS 13.3 开始)。所以你想要的任何东西,你都需要自己包装底层 API,创建你自己的自定义发布者。

使用Combine 包装异步调用的最直接方法可能是使用Future发布者构建您自己的发布者,也可能使用Deferred发布者,这取决于您希望它如何反应。这与您可能用于将任何 async-API 制作成发布者的 API 结构相同。

Using Combine 中一个这样做的示例(带有源代码)与部分包装异步调用与 Future 以创建一次性发布者通过包装基于委托的 API 来创建重复发布者

作为一般模式,我的目标是让发布者接收与您想要创建的 UI 体验相关的任何更新。这样做的很多过程都涉及选择要封装和包装的内容(错误处理、类型操作以及从底层数据更改中确定要呈现的内容)。