用于异步 CloudKit 记录处理的 Swift 扩展。设计简洁易用。
AsyncCloudKit 将 CloudKit 操作公开为 async 函数和 AsyncSequences。
很遗憾,我无法继续维护此项目。如果您想 Fork 并维护它,请联系我。
请考虑使用 CloudKit 和 SwiftData 中的新异步功能。
AsyncCloudKit 是一个 Swift Package。使用 Xcode 或 Swift Package Manager 将 AsyncCloudKit 添加到您的 Package.swift 中。可以选择指定一个 版本要求。
dependencies: [
.package(url: "https://github.com/chris-araman/AsyncCloudKit.git", from: "1.0.0")
]
然后解析依赖项
swift package resolve
更新到与您的版本要求兼容的最新 AsyncCloudKit 版本
swift package update AsyncCloudKit
Swift 并发允许您异步处理 CloudKit 记录,而无需编写大量涉及 CKOperations 和完成块的样板代码。 在这里,我们在我们的 CKDatabase 上执行一个查询,然后异步处理结果。 当每个 CKRecord 从数据库中读取时,我们打印它的 name 字段。
import CloudKit
import AsyncCloudKit
func queryDueItems(database: CKDatabase, due: Date) async throws {
for try await record in database
.performQuery(ofType: "ToDoItem", where: NSPredicate(format: "due >= %@", due)) { (record: CKRecord) in
print("\(record.name)")
})
}
返回 ACKSequence 的 AsyncCloudKit 函数会立即将操作排队。 迭代序列允许您检查操作的结果。 如果您提前停止迭代序列,则可以取消操作。
请注意,由于 atBackgroundPriority 函数构建于不提供取消方式的 CKDatabase 方法之上,因此它们无法取消。 如果您需要操作响应协同取消请求,请使用名称中没有 atBackgroundPriority 的发布者。 您仍然可以通过传入 CKOperation.Configuration 来指定 QualityOfService.background。
💯% 使用 Jazzy 记录。由 GitHub Pages 托管。
欢迎贡献!
要了解有关 Swift 并发和 CloudKit 的更多信息,请观看 WWDC 的这些视频
...或查看 Apple 的文档
如果您正在寻找 CloudKit 的 Swift Combine 扩展,请查看 CombineCloudKit!
AsyncCloudKit 由 Chris Araman 创建。 它在 MIT 许可证下发布。