2016-03-26 4 views
10

Я пытаюсь использовать CKQueryOperation, а не performQuery в моей базе данных CloudKit.CKQueryOperation не возвращает ошибку, когда устройство отключено

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

Вот голые кости мои 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?

Благодаря

ответ

8

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

Итак, добавив следующую строку

queryOperation.qualityOfService = .UserInitiated 

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

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

Не удалось найти что-либо в компании Apple Docs намекнуть на это тоже.

+0

Я также обнаружил, что значение 'timeoutIntervalForResource' для операций' timeoutIntervalForResource' составляет 7 дней ... Таким образом, может потребоваться неделя, прежде чем отказаться от запроса, даже если это звучит глупо. Я изменил его на 6 секунд и –

Смежные вопросы