iOS REST llamadas y estrategias de almacenamiento en caching

En el pasado, he utilizado algunas estrategias diferentes para proporcionar la mejor experiencia de usuario al pasar por varias pantallas de una aplicación iOS basada en REST:

  • Aproveche NSURLCache: si bien esto funciona bien para ciertos casos de uso, estoy más interesado en un enfoque que funcione así: "visualice el caching inmediatamente mientras llama a la API, luego actualice la pantalla con datos más nuevos si es necesario". NSURLCache parece que solo me proporciona opciones tales como leer el caching de formulario O leer desde el control remoto dependiendo de varias políticas, pero no leerlo desde el caching ENTONCES leer desde el control remoto.
  • Aproveche los datos centrales: ya sea a través de Restkit, AFIncrementalStore o marco personalizado, la idea aquí es get datos de los datos centrales mientras se realiza la llamada. Una vez que la llamada regresa, los datos centrales se actualizan con los últimos datos y la interfaz se actualiza. Puede funcionar de maravilla, pero requiere una gran cantidad de configuration y mantenimiento, agrega un alto nivel de complejidad. Es una buena opción cuando se requiere el modo fuera de línea, pero si solo se requiere caching, esto parece excesivo. –

¿Alguien tiene un enfoque diferente a esto, o tiene una biblioteca ligera para recomendar que proporciona funcionalidad avanzada de almacenamiento en caching, sin necesidad de Core Data?

Aproveche NSURLCache: Básicamente quiere que se incorpore el almacenamiento en memory caching en un marco. SÍ existe y se denomina AFNetworking . Aquí está la documentation que especifica lo mismo. Abstrae el mecanismo de almacenamiento en caching de su código.

Tiene que diseñar un controller de datos que verifique si los datos están disponibles en el disco (datos principales) si no realiza una request de networking utilizando AFNetworking (que también incluye el almacenamiento en memory caching).

No hay un marco que le brinde almacenamiento en caching de disco utilizando los datos centrales y la memory caching utilizando NSURLcache

Una posible respuesta a mi pregunta es aprovechar NSCoding / NSKeyedArchiver.

Una buena descripción de esto se puede encontrar aquí http://nshipster.com/nscoding/

A través de NSKeyedArchiver, puedo conservar los datos sin tener que configurar un model de datos completo con Core Data. La pregunta es cómo crear un mecanismo eficiente de caching alnetworkingedor de NSKeyedArchiver, y si una biblioteca de terceros ya lo está haciendo. Y parece que una respuesta se llama TMCache https://github.com/tumblr/TMCache

Entonces, mi intención en este momento es hacer que mis classs se ajusten a NSCoding, que algunos objects persisten a través de TMCache. Estoy planeando enrutar primero mis llamadas de API al caching, mientras actualizo el caching en segundo plano.