Actualización de Parse iOS Local Datastore

Estoy creando un juego para el iPhone, y la pantalla principal es una list de juegos que el usuario actual tiene en progreso. Quiero usar el almacén de datos local de Parse porque mis consultas toman mucho time cuando hay muchos juegos en progreso. Tengo una pregunta sobre el almacén de datos que no parece responderse claramente en los documentos.

Cuando se abre la aplicación, busco mi tabla de juegos en segundo plano, los clasifico según el estado (tu turno, su turno, más) y los muestro en una tabla. Para acelerar este process, quisiera fijar todos estos objects en el almacén de datos local.

Cuando el usuario actualiza la vista de tabla para ver si alguno de los estados del juego ha cambiado, me gustaría consultar el almacén de datos para recuperar todos los objects relevantes, pero también consultar a la networking para ver si hay cambios en los objects y para cualquier otro nuevo . Sin embargo, no parece haber ninguna forma de hacer que el almacén de datos local esté "actualizado". La única forma que he visto es consultar la networking por completo, desmarcar los objects almacenados actualmente y fijar los objects recién recuperados. Si este es el caso, no veo el punto en el uso del almacén de datos local porque mis consultas serán tan lentas.

Básicamente, cada vez que el usuario tira para actualizar la tabla, me gustaría consultar el almacén de datos, y luego la networking para comprobar si hay nuevos objects o columnas cambiadas.

Entonces, ¿hay alguna forma de consultar el almacén de datos local y, posteriormente, actualizar esos objects y / o agregar nuevos desde la networking?

También me di count de que estoy haciendo un poco de sorting. ¿Podría esto tener un efecto en el largo time de espera para que la tabla se cargue?

Parece que está buscando la política de caching kPFCachePolicyCacheThenNetwork que mira primero al caching para llenar la tabla, luego realiza una consulta en la networking y luego vuelve a actualizar la tabla.

Tenga en count que cachePolicy solo se puede usar sin el Almacén de datos local. Si desea ir con Local Datastore, puede implementar la misma funcionalidad encadenando consultas.

 PFQuery *queryLocal = [PFQuery queryWithClassName:@"SomeClass"]; [queryLocal fromPinWithName:@"SomeLabel"]; [[[queryLocal findObjectsInBackground] continueWithSuccessBlock:^id(BFTask *task) { NSArray *localObjects = task.result; // Fill the table here with localObjects // Then make an online query PFQuery *query = [PFQuery queryWithClassName:@"SomeClass"]; return [query findObjectsInBackground]; }] continueWithSuccessBlock:^id(BFTask *task) { NSArray *objects = task.result; // Fill the table here with online objects // You should ensure that the most recent data is online return [[PFObject unpinAllObjectsInBackgroundWithName:@"SomeLabel"] continueWithSuccessBlock:^id(BFTask *ignonetworking) { // Cache the new results. return [PFObject pinAllInBackground:objects withName:@"SomeLabel"]; }]; }]; 
    Intereting Posts