⛅️ AsyncCloudKit

用于异步 CloudKit 记录处理的 Swift 扩展。设计简洁易用。

Swift Platforms License Release

Lint | Build | Test Coverage

AsyncCloudKit 将 CloudKit 操作公开为 async 函数AsyncSequences

⚠️已弃用

很遗憾,我无法继续维护此项目。如果您想 Fork 并维护它,请联系我。

请考虑使用 CloudKit 和 SwiftData 中的新异步功能。

📦 将 AsyncCloudKit 添加到您的项目

AsyncCloudKit 是一个 Swift Package。使用 XcodeSwift 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

🌤 在您的项目中使用 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 许可证下发布。