Запрос общих записей в ckzone в частной базе данных ничего не возвращает
Swift 4.2 iOS 11.x
Должно быть, я что-то пропустил, потому что это, безусловно, должно сработать. Я получил этот код, который запрашивает частную базу данных в пользовательской зоне. Он ничего не возвращает, несмотря на то, что у меня есть записи там. Я добавил индексы ко всему! Я также изменил роли в разрешениях, чтобы любой прошедший проверку пользователь мог читать записи.
public func cleanUpImages(zone2U:String) {
var records2Delete:[CKRecord.ID] = []
let zone2D = CKRecordZone(zoneName: zone2U)
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: remoteRecords.notificationMedia, predicate: predicate)
let operation = CKQueryOperation(query: query)
operation.recordFetchedBlock = { record in
records2Delete.append(record.recordID)
}
operation.queryCompletionBlock = { cursor, error in
print(records2Delete.count)
}
CKContainer.default().privateCloudDatabase.add(operation)
NotificationMedia - это глобальная статическая переменная, которую я также использую для сохранения указанных записей, поэтому она не может быть неправильной / другой.
2 ответа
Установить zoneID
из operation
потому что сейчас вы запрашиваете зону по умолчанию.
let operation = CKQueryOperation(query: query)
operation.zoneID = zone2D.zoneID
Я думаю, что нашел ответ. Я использовал устаревший метод, чтобы сохранить свою запись.
let customRecord = CKRecord(recordType: remoteRecords.notificationMedia, zoneID: zone2D.zoneID)
Я изменил это на это..
let customID = CKRecord.ID(recordName: remoteRecords.notificationMedia, zoneID: zone2D.zoneID)
let customRecord = CKRecord(recordType: remoteRecords.notificationMedia, recordID: customID)
Теперь я нахожу свои записи в sharedDatabase в базе данных cloudKit, и когда я использую метод, показанный над набором зон, как указано в rmaddy, я нахожу свои записи.