Sto tentando di utilizzare CKQueryOperation
, piuttosto che performQuery
sul mio database CloudKit.CKQueryOperation non restituisce un errore quando il dispositivo è offline
Entrambi i lavori, ma quando si utilizza un CKQueryOperation non sto ottenendo un errore quando il dispositivo non è in linea, ma io quando si utilizza performQuery
Ecco le ossa nude mia performQuery
esempio, database è il mio CKDatabase
database.performQuery(q, inZoneWithID: nil) { (records:[CKRecord]?, error:NSError?) in
if error != nil {
print(error!.localizedDescription)
return
}
}
Viene visualizzato un errore quando il dispositivo è offline, consentendomi di richiedere all'utente. L'errore è
The internet connection appears to be offline
Tuttavia, ottengo nessun errore quando uso un 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)
Con una connessione ricevo i miei dati per entrambi i metodi in modo che funzioni come previsto.
Come/dove sono informato dell'errore quando si utilizza CKQueryOperation
?
Grazie
Ho anche trovato che il valore predefinito di operationouttimevaloreForResource' è 7 giorni ... Quindi potrebbe richiedere una settimana prima di rinunciare alla richiesta, anche se sembra sciocco. L'ho cambiato in 6 secondi e voilá –