2010-11-02 16 views
19

Me gustaría serializar un montón de datos y guardarlos en un archivo, luego poder cargarlos (naturalmente) y reproducirlos con una función que he escrito. (Disculpe si mi terminología está desactivada, soy un novato con este tipo de cosas.) ¿Cuál es la mejor manera de hacer esto con iOS? De su análisis de la documentación aquí:¿Cuáles son las opciones para guardar datos en iOS?

Standard Application Behaviors Guide

que he reunido que debo utilizar NSSearchPathForDirectoriesInDomains para encontrar la raíz del directorio de almacenamiento adecuada (Documentos?) Y luego usar NSData para almacenar estos buffers de datos que crean y escribirlas archivar. ¿Estoy de acuerdo con eso o lo he entendido mal? ¿Algún otro consejo sabio?

+4

¿Aceptar una respuesta? – golddove

Respuesta

1

Sí, muy buena dirección. Necesita implementar algo, que se llama protocolo NSCoding en su objeto para poder archivar & desarchivarlo en NSData. Vea el ejemplo: Saving files on iOS using NSFileManager

18

Puede usar plist.
Es muy fácil guardar la lista de cadenas u otros datos sin usar datos centrales.
Ver Property List Programming Guide

Por ejemplo, este código se ahorrará un objeto (rootObj) que puede ser una matriz o un diccionario:

NSString *error; 
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"yourFile.plist"]; 
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:rootObj 
                   format:NSPropertyListXMLFormat_v1_0 
                errorDescription:&error]; 
if(plistData) { 
    [plistData writeToFile:plistPath atomically:YES]; 
} 
else { 
    NSLog(@"Error : %@",error); 
    [error release]; 
} 

Hay una cierta limitación en la clase admitida (consulte la guía)

+4

dataFromPropertyList está en desuso. – Jackson

+0

Error: ARC prohíbe el envío explícito de mensajes de 'publicación' – Kamal

13

Depende de los datos que está escribiendo. Si en su mayoría desea serializar objetos, consulte el protocolo NSCoding. Si tiene una estructura de datos simple que no es una clase, puede almacenarla en un NSDictionary y guardarla en un plist. Y si tiene una gran cantidad de datos (como miles de flotadores o algo así), puede guardarlo usando NSData como ya lo insinuó. En cualquier caso, asegúrese de leer el Archives and Serializations Programming Guide para no reinventar la rueda.

Cuestiones relacionadas