Запрос общих записей в 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, я нахожу свои записи.

Другие вопросы по тегам