Мой предикат хочет исключить некоторые записи, которые уже загружены и доступны в [CKRecordID]. Теперь я могу запросить 1 CKRecordID [0], но не массив [CKRecordID]. Как я могу запросить массив?Как запросить CloudKit для recordID IN [CKRecordID]
let excludeIDs: [CKRecordID]
Это работает:
let pred1 = NSPredicate(format: "NOT(recordID = %@)", excludeIDs[0])
Но это не делает:
let pred1 = NSPredicate(format: "NOT(recordID IN %@)", excludeIDs)
ОШИБКА: loadImageCompareRecordIDsAndEndDateThatHaveNotEnded Ошибка: недопустимый предикат: инвалидные предикат: члены массива должны соответствовать CKRecordValue: ( "", "", "", "" , "" ) (CKRecordID)
Другие общие части кода:
let sort = NSSortDescriptor(key: "creationDate", ascending: false)
let query = CKQuery(recordType: MyRecordTypes.ImageCompare, predicate: pred1)
query.sortDescriptors = [sort]
let operation = CKQueryOperation(query: query)
operation.desiredKeys = ["endDate"]
operation.resultsLimit = 50
Спасибо, странный CKRecordID работает для одиночных сравнений – malhal
Можете ли вы предоставить образец кода? –
@SamBallantyne Просто конвертируйте свои идентификаторы записей в CKReferences, например let refs = myRecords.map ({CKReference (recordID: $ 0.record.recordID, действие: .None)}) – DogCoffee