warriors tutorial ios iphone swift icloud cloudkit

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