我如何通过其记录名称查询 CloudKit 以获取特定记录?

Posted

技术标签:

【中文标题】我如何通过其记录名称查询 CloudKit 以获取特定记录?【英文标题】:How would I query CloudKit for a specific record by its recordName? 【发布时间】:2020-05-26 18:18:34 【问题描述】:

如何通过记录名称查询 CloudKit 以获取特定记录?

下面的代码给了我一个错误。

let recordName = "BBBA9068-D01A-9D55-3D6B-4460A7B36D57"
let predicate = NSPredicate(format: "recordID=%@", recordName)
let query = CKQuery(recordType: "Route", predicate: predicate)

privateDatabase.perform(query, inZoneWith: nil) 

    (records: [CKRecord]?, error: Error?) in

    if error != nil 

        print(error!.localizedDescription)

     else 

        if let records = records 

            print(records.first as Any)

        

    


调试窗口显示:

字段“___recordID”的值类型为 REFERENCE,无法使用筛选值类型 STRING 进行查询

【问题讨论】:

【参考方案1】:

我更改了代码的前两行并让它工作。

let recordID: CKRecord.ID = CKRecord.ID(recordName: "BBBA9068-D01A-9D55-3D6B-4460A7B36D57")
let predicate = NSPredicate(format: "recordID=%@", recordID)
let query = CKQuery(recordType: "Route", predicate: predicate)

privateDatabase.perform(query, inZoneWith: nil) 

    (records: [CKRecord]?, error: Error?) in

    if error != nil 

        print(error!.localizedDescription)

     else 

        if let records = records 

            print(records.first as Any)

        

    


【讨论】:

以上是关于我如何通过其记录名称查询 CloudKit 以获取特定记录?的主要内容,如果未能解决你的问题,请参考以下文章

使用 NSPredicate 查询 CloudKit 以获取空白(或 null 或其他)的日期

如何从 CloudKit 查询和获取数据?

CloudKit 查询中的 UITableView 部分

Cloudkit JS - 由创建它们的用户查询记录

CloudKit:获取列表属性中具有特定元素的记录

如何获取当前用户创建的所有 CloudKit 记录?