Caché de datos de Objectivo C en iOS

Estoy jalonando datos de una API y luego construyendo mis objects de datos con ella. Quiero almacenar en caching estos datos para el futuro. He estado almacenando la cadena desde la API en NSUserDefaults y luego volviendo a analizarla cada vez que se carga la aplicación. Esto funciona, pero realmente parece ser la forma incorrecta de hacerlo.

¿Cómo puedo hacer esto?

¿Has notado el NSCache ?

Un object NSCache es una colección mutable que almacena pares key-valor, similar a un object NSDictionary . La class NSCache proporciona una interfaz programática para agregar y eliminar objects y establecer políticas de desalojo según el costo total y el número de objects en el caching …

Personalmente, me gustan mucho las classs de EGOCache, las uso mucho en mis proyectos:

https://github.com/enormego/EGOCache

Las classs son fáciles de usar, solía tener mis propias classs con un layout similar, pero son más completas, así que decidí seguirlas (no quiero redevise la rueda).

Existen muchas soluciones diferentes a este problema y no existe una forma "correcta" de hacerlo. Algunas opciones populares son:

  • Core Data – Marco de Apple para la persistencia. Muy performante, pero más difícil.
  • SQLite : rápido y flexible, pero con los huesos desnudos.
  • Plists : básicamente, al escribir un file en el disco, debe leer y escribir manualmente.
  • NSUserDefaults – La opción de "key-valor" del peso más ligero.

Lo animo a leer sobre los cuatro y ver cuál funciona mejor para usted.

Voto datos principales

¿Qué tipo de datos? Si sus bases de text / cadena SQLLite probablemente serían las mejores.

Almacenaría los datos calculados / analizados en un almacén Core Data o en files planos NSData en el directory de documentos de su aplicación. Está en lo cierto que almacenar eso en NSUserDefaults y luego volver a analizar se siente un poco exagerado.