ios - warriors - cloudkit tutorial
iOS 9 CloudKit: la consulta no devuelve nada mientras está conectado a la red celular (1)
Abra la aplicación de configuración, encuentre su aplicación, habilite ''usar datos móviles''
Actualización: Como se discute más abajo. Agregar la siguiente línea de código resolvió el problema:
queryOperation.qualityOfService = .UserInteractive
La razón por la cual esto funciona debe ser un problema de tiempo / carga. Mi suposición inicial sería que esto es causado por esta línea:
queryOperation.queuePriority = .VeryHigh
La documentación indica para .queuePriority
this: Debe usar valores de prioridad solo según sea necesario para clasificar la prioridad relativa de las operaciones no dependientes.
La documentación establece para .qualityOfService
esto: El valor predeterminado de esta propiedad es NSOperationQualityOfServiceBackground y debe dejar ese valor en su lugar siempre que sea posible.
Por lo tanto, intente eliminar tanto .queuePriority
como .qualityOfService
y vea si está funcionando.
Actualización 2: Aparentemente este es un error de CloudKit. Más personas tienen el mismo problema. Por favor repórtalo en https://bugreport.apple.com
Estoy desarrollando una aplicación con xcode 7 beta 5. Cuando ejecuto mi aplicación en mi iphone 6 y trato de conectarla a CloudKit si mi iphone funciona en modo wifi todo está bien, muestro todos mis datos; pero si mi iPhone funciona en modo LTE, no puedo ver ningún tipo de datos. ¿Alguien sabe como hacer esto?
func getRecordsFromCloud() {
lavori = []
/
let _cloudContainer = CKContainer.defaultContainer()
let publicDatabase = CKContainer.defaultContainer().publicCloudDatabase
/
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Lavori", predicate: predicate)
/
let queryOperation = CKQueryOperation(query: query)
queryOperation.desiredKeys = ["image","name"]
queryOperation.queuePriority = .VeryHigh
queryOperation.resultsLimit = 50
queryOperation.recordFetchedBlock = { (record:CKRecord) -> Void in
let lavoriRecord = record
self.lavori.append(lavoriRecord)
}
queryOperation.queryCompletionBlock = { (cursor:CKQueryCursor?, error:NSError?) -> Void in
if (error != nil) {
print("Failed to get data from iCloud - /(error!.localizedDescription)")
}
else {
print("Successfully retrieve the data from iCloud")
dispatch_async(dispatch_get_main_queue(), {
self.tableView.reloadData()
})
}
}
/
publicDatabase.addOperation(queryOperation)
}
Gracias, Alessio