Как мне запросить CloudKit для определенной записи c по ее recordName? - PullRequest
0 голосов
/ 26 мая 2020

Как мне запросить CloudKit для конкретной c записи по ее recordName?

Следующий код выдает ошибку.

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 Ответ

0 голосов
/ 27 мая 2020

Я изменил первые две строчки кода и заставил его работать.

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)

        }

    }

}
...