2010-07-01 6 views

risposta

32

uso NSKeyedArchiver

Per convertire NSDictionary Per 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]; 

Per ottenere il NSDictionary indietro dalla stored NSData

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

Una versione molto più semplice della risposta di Robert:

[NSKeyedArchiver archiveRootObject:YOURDICTIONARY toFile:YOURFILEPATH]; 

E, corrispondentemente:

YOURDICTIONARY = [NSKeyedUnarchiver unarchiveObjectWithFile:YOURFILEPATH]; 

O, per rispondere alla domanda, come originariamente stabilito, senza imputare un file in cose:

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

E 'tutti i metodi di fabbrica in modo che sia lo stesso codice con o senza ARC; i metodi utilizzati sono stati disponibili da OS X v10.2 e su iOS sin dal primo giorno.