2010-07-01 12 views

Respuesta

32

uso NSKeyedArchiver

Convertir NSDictionary Para NSData

NSMutableData *data = [[NSMutableData alloc]init]; 
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data]; 
[archiver encodeObject:YOURDICTIONARY forKey: YOURDATAKEY]; 
archiver finishEncoding]; 
[data writeToFile:YOURFILEPATH atomically:YES]; 
[data release]; 
[archiver release]; 

Para obtener el NSDictionary atrás de la NSData almacenado

NSData *data = [[NSMutableData alloc]initWithContentsOfFile:YOURFILEPATH]; 
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; 
YOURDICTIONARY = [unarchiver decodeObjectForKey: YOURDATAKEY]; 
[unarchiver finishDecoding]; 
[unarchiver release]; 
[data release]; 
2

Una versión más simple de la respuesta de Robert:

[NSKeyedArchiver archiveRootObject:YOURDICTIONARY toFile:YOURFILEPATH]; 

y, en consecuencia:

YOURDICTIONARY = [NSKeyedUnarchiver unarchiveObjectWithFile:YOURFILEPATH]; 

O para responder a la pregunta fijados originalmente, sin imputar un archivo en cosas:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:YOURDICTIONARY]; 
... 
YOURDICTIONARY = [NSKeyedUnarchiver unarchiveObjectWithData:data]; 

Es todos los métodos de fábrica por lo que es el mismo código con o sin ARC; los métodos utilizados han estado disponibles desde OS X v10.2 y en iOS desde el primer día.

Cuestiones relacionadas