Cloudkit 与组合
Posted
技术标签:
【中文标题】Cloudkit 与组合【英文标题】:Cloudkit with Combine 【发布时间】:2019-12-20 13:33:26 【问题描述】:我正在使用 SwiftUI 开发一个应用程序,并使用仅针对 ios 13 的 MVVM 架构进行组合。我想在设备之间实现数据同步并使用 CloudKit 框架进行共享。我如何组合 CloudKit 框架以在我的项目中使用?有什么可以对 CloudKit 操作执行以使用 Combine 的吗?
【问题讨论】:
最好使用 SwiftUI 自己的真实来源模式。 MMVM 不兼容。 【参考方案1】:CloudKit API 很大程度上基于完成回调(根据CloudKit Tips and Tricks),但它没有为任何特定的发布者设置(目前 - 从 iOS 13.3 开始)。因此,您需要自己封装底层 API,创建自己的自定义发布者。
使用 Combine 包装异步调用的最直接方法可能是使用 Future publisher 构建您自己的发布者,也可能使用 Deferred publisher,这取决于您希望它如何反应。这与您可以用来将任何 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 体验相关的任何更新。执行此操作的很多过程都涉及选择要封装和包装的内容(错误处理、类型操作以及从基础数据更改中确定要呈现的内容)。
【讨论】:
以上是关于Cloudkit 与组合的主要内容,如果未能解决你的问题,请参考以下文章
CloudKit 查询与 modifyDate 始终返回无结果
CoreData与CloudKit同步时将图像保存到CoreData?