Выборка нескольких записей по имени записи

У меня есть массив имен записей (или строк) . Я хочу получить любую запись в общедоступной базе данных, которая имеет любое из этих имен записей. Как я могу это сделать?

1 ответ

Решение

Вы должны применить что-то вроде этого...

let filter: [String] = [ "String1", "String2", "String3" ]

let predicate: NSPredicate = NSPredicate(format: "%k IN %@", "record_name", filter)
let query: CKQuery = CKQuery(recordType: "RecordType", predicate: predicate)

CKContainer.default.publicCloudDatabase.perform(query, inZoneWith: nil, completionHandler: { @escaping ([CKRecord]?, Error?) -> Void in 
    // Do what you want with your filtered CKRecords ;)
})

NSPredicate использует агрегированный оператор IN для того, чтобы фильтровать по содержимому массива. Больше информации в Predicate Programming Guide

Проверять, выписываться CKFetchRecordsOperation(recordIDs: [CKRecord.ID])

вы не включили пример кода, но если у вас есть идентификаторы записи в виде массива строк, тогда:

let ids: [String] = [...] // your array of the record names as Strings 
let recordIDs = ids.map { CKRecord.ID(recordName: $0) }
let operation = CKFetchRecordsOperation(recordIDs: recordIDs)
operation.fetchRecordsCompletionBlock = { (ckRecords, error) in
  ... // do stuff with your records
}
CKContainer.default().publicCloudDatabase.add(operation)
Другие вопросы по тегам