用于异步 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 记录,而无需编写大量涉及 CKOperation
s 和完成块的样板代码。 在这里,我们在我们的 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 许可证下发布。