CloudKit CKQuery
要从数据库中选择记录,需使用 CKQuery 。CKQuery 描述了如何找到所有特定类型的记录,这些记录符合某些条件。
CloudKit 仅支持可用 NSPredicate 函数的子集。这些包括数学比较,一些字符串和集合操作,如“字段匹配列表中的项目之一”,以及特殊距离函数。CloudKit 支持的函数及其使用方法的详细列表可以在 CKQuery 类参考中找到。
Demo
出处:《CloudKit Tutorial: Getting Started | Kodeco》
@objc func refresh(_ completion: @escaping (Error?) -> Void) {
  // 1.
  let predicate = NSPredicate(value: true)
  // 2.
  let query = CKQuery(recordType: "Establishment", predicate: predicate)
  establishments(forQuery: query, completion)
}
private func establishments(forQuery query: CKQuery,
    _ completion: @escaping (Error?) -> Void) {
  publicDB.perform(query,
      inZoneWith: CKRecordZone.default().zoneID) { [weak self] results, error in
    guard let self = self else { return }
    if let error = error {
      DispatchQueue.main.async {
        completion(error)
      }
      return
    }
    guard let results = results else { return }
    self.establishments = results.compactMap {
      Establishment(record: $0, database: self.publicDB)
    }
    DispatchQueue.main.async {
      completion(nil)
    }
  }
}
- 创建了一个为 true的谓词
- 创建一个 CKQuery,指定是对什么类型的查询
- 在 establishments 方法中,执行具体的查询操作
本文作者:Maeiee
本文链接:CloudKit CKQuery
版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!
喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!
