Devo convertire un oggetto NSDictionary
in NSData
e inoltre devo ottenere lo stesso NSDictionary
dall'oggetto NSData
. Come dovrei farlo?conversione di oggetto NSDictionary su oggetto NSData e viceversa
16
A
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.