Сервер CloudKit отклонил запрос: неизвестное поле recordName
Я делаю CKQuery
как это в Swift 4:
CKQuery(recordType: package.recordType, predicate:
NSPredicate(format: "NOT (recordName IN %@)", package.recordNames as CVarArg))
... и я получаю это CKError
:
CKError (_nsError: CKError 0x60000024dce0: "Запрос отклонен сервером" (15/2000); сообщение сервера = "Неизвестное поле" имя-записи ""; uuid = BCD7C8DA-04B0-4422-8A24-F6479D234706; идентификатор контейнера = "...")
Есть ли специальный ключ для использования при запросе recordName
?
1 ответ
Покопавшись, я обнаружил, что вы не можете делать запросы по recordName
напрямую, но вы можете запросить recordID
, Таким образом, вместо сравнения массива строк, вы должны построить массив CKRecordID
и запрос, как это:
//- 1 - Build an array of CKRecordIDs
package.recordIDs = [CKRecordID(recordName: "..."), CKRecordID(recordName: "...")]
//- 2 - Set the predicate to use the `recordID` key
let pred = NSPredicate(format: "NOT (recordID IN %@)", package.recordIDs as CVarArg)
//- 3 - Set the query and drop your mic
CKQuery(recordType: package.recordType, predicate: pred)
Я надеюсь, что это помогает кому-то еще.