Подтвердить что ты не робот

CKQueryOperation не возвращает ошибку при отключенном устройстве

Я пытаюсь использовать CKQueryOperation, а не performQuery в моей базе данных CloudKit.

Оба работают, но при использовании CKQueryOperation я не получаю сообщение об ошибке, когда устройство отключено, но при использовании performQuery

Вот пример моих костей my performQuery, база данных - это мой CKDatabase

database.performQuery(q, inZoneWithID: nil) { (records:[CKRecord]?, error:NSError?) in
    if error != nil {
        print(error!.localizedDescription)
        return
    }
}

Ошибка, когда устройство отключено, что позволяет мне запрашивать пользователя. Ошибка

The internet connection appears to be offline

Однако я не получаю ошибок при использовании CKQueryOperation

let p = NSPredicate(format:"recordID IN %@", student.courses)
let q = CKQuery(recordType: String(Course), predicate: p)

let queryOperation = CKQueryOperation(query: q)

queryOperation.recordFetchedBlock = { record in
    // not called without network connection - doesn't enter scope
    print(record)
}


queryOperation.queryCompletionBlock = { (cursor: CKQueryCursor?, error: NSError?) in
    // not called without network connection - doesn't enter scope
    print(cursor)
    print(error)
}

database.addOperation(queryOperation)

При соединении я получаю свои данные для обоих методов, поэтому он работает как ожидалось.

Как/Где я сообщал об ошибке при использовании CKQueryOperation?

Спасибо

4b9b3361

Ответ 1

Как обычно, я публикую щедрость и нахожу ответ в течение следующего часа или 2. Не знаю, как я пропустил this изначально, но в нем содержался ответ, который я искал для.

Итак, добавив эту строку

queryOperation.qualityOfService = .UserInitiated

что-то за кулисами меняется, и у нас есть несколько приятных действий в

queryOperation.queryCompletionBlock = { (cursor: CKQueryCursor?, error: NSError?) in
    // We get an error message... Finally !!
    print(error)
}

Не удалось найти что-либо в Документах Apple, чтобы намекнуть на это.