Depende del tipo de datos que desee guardar y si solo lo usará internamente o si tendrá que intercambiar los datos con un servicio externo.
NSCoding es en general un serializador de datos. Una gran cantidad de objetos incorporados implementa el protocolo NSCoder que le permite guardarlos como una secuencia binaria (archivo, en un BLOB de sqlite, etc.). El NSKeyedArchiver le da el plus de búsqueda en tales flujos basados en una etiqueta de cadena , un poco como un diccionario, pero solo puede usar cadenas como claves. Este enfoque es bueno si ocasionalmente tiene que persistir algunos objetos de diferentes clases.
Sin embargo, si usted tiene muchos objetos de la misma clase , usted es mejor ir para una base de datos de enfoque, SQLite o CoreData. CoreData es prácticamente una envoltura alrededor de SQLite que facilita mucho el diseño de su modelo de datos, y hace las consultas al DB detrás de las cortinas, sin la necesidad de escribir sentencias de SQL. En CoreData usted define sus clases, y cada instancia de la clase puede persistir, es decir, puede recuperar los valores de los miembros del objeto sin tenerlos siempre en la memoria. Esta es una forma muy conveniente de almacenar una gran cantidad de datos estructurados. Por ejemplo, si escribe un navegador web, puede almacenar los marcadores del usuario con el nombre, la URL y tal vez la última vez que lo visitó.
Para XML y JSON no hay una ventaja particular si usa los datos solo localmente en el dispositivo. Si tiene que comunicarse con algún servicio externo, puede considerar almacenar en caché/guardar los objetos XML/JSON tal como están para su uso posterior. Otro enfoque sería regenerar estos datos a partir de sus estructuras internas de datos (ver arriba) cada vez que lo necesite.
Si diseña usted mismo su modelo de datos, veo aún menos puntos para usar listas, pero tal vez alguien me corrija.
EDITAR: Agregué aquí una referencia de enlace corto para tutoriales sobre cómo usar NSCoding, Core Data, y como una bonificación, SQLite.
ACTUALIZACIÓN 12.01.2016: Si está buscando soluciones de persistencia, le sugiero que también consulte Realm.
Posibles duplicados: http://stackoverflow.com/questions/4989609 http://stackoverflow.com/questions/840634 –
la cosa es sqlite se considera dentro de coredata. Y el primer enlace que sugirió, habla específicamente de sqlite3 vs nscoding; sin muchas respuestas Estoy haciendo preguntas más generales. Por qué hay tantas opciones para tratar con datos. – LolaRun