我正在用SwiftUI开发一个应用程序,并结合使用MVVM架构,只针对iOS 13。我想使用CloudKit框架实现设备之间的数据同步和共享。如何组合CloudKit框架以在我的项目中使用?为了使用Combine,对CloudKit操作有什么可以做的吗?
发布于 2019-12-21 22:53:31
CloudKit API在很大程度上基于完成回调(每个CloudKit Tips and Tricks),但它没有为任何特定的发布者设置(目前是iOS 13.3)。因此,任何你想要的东西,你都需要自己包装底层API,创建自己的自定义发布器。
使用Combine包装异步调用的最直接方法可能是使用Future publisher构建您自己的publisher,也可能使用Deferred publisher,这取决于您希望它如何反应。这是您可以用来使任何异步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体验相关的任何更新。这样做的很多过程都涉及到选择要封装和包装的内容(错误处理、类型操作和确定要从底层数据更改中呈现什么)。
https://stackoverflow.com/questions/59426092
复制相似问题