2012-07-03 15 views
5

Mi proyecto necesita almacenar en caché los datos del dispositivo iOS recuperados de un servicio web remoto. La idea es que el controlador de vista pregunte a la memoria caché por todos los objetos de documento que tiene, por ejemplo, y en segundo plano solicitará una actualización del servicio web, devolviendo al controlador de vista cualquier documento nuevo que reciba. Me pregunto si es posible que los controladores de vistas utilicen NSFetchedResultsController que recupera los objetos que coincidan con los criterios que puede encontrar localmente en la base de datos, y también solicita de forma asincrónica actualizaciones de datos desde el servicio web en segundo plano. Al hacerlo, NSFetchedResultsController actualizará la base de datos y, por supuesto, activará el método didChangeObject del delegado FetchedResultsController para que las vistas se actualicen en consecuencia. ¿Eso suena razonable? ¿Tiene alguna sugerencia para implementar tal cosa?Uso de datos principales como memoria caché local para datos recuperados de servicios web remotos

+1

Sí, esta es incluso la solución típica ... – graver

+1

No quiero que todos los controladores de vista necesiten saber que el relleno de CD del back-end está sucediendo, así que creo que debo implementar algo que busque lo que se ha solicitado desde el CD, y en segundo plano va al servicio web para asegurarse de que el CD tenga lo último. – DarylWM

Respuesta

6

Para nuestro proyecto, pudimos simplificar un poco el problema. Sin embargo, en el viaje de descubrimiento, nos encontramos con NSIncrementalStore, que es solo el boleto para el problema planteado en la pregunta. Básicamente le da control sobre cómo y dónde el CD persiste en los datos. Aquí está a really nice post about it y an easy-to-understand example. Es cierto que no hay mucho doco al respecto, pero estas publicaciones realmente me ayudaron a ponerme en marcha.

Cuestiones relacionadas