2010-07-01 196 views

回答

32

使用的NSKeyedArchiver

要的NSDictionary转换为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]; 

从存储的NSData的

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

一个更简单的版本罗伯特的回答得到的NSDictionary回:

[NSKeyedArchiver archiveRootObject:YOURDICTIONARY toFile:YOURFILEPATH]; 

,并相应:

YOURDICTIONARY = [NSKeyedUnarchiver unarchiveObjectWithFile:YOURFILEPATH]; 

或者为原来,而不归咎于一个文件分成东西来回答这个问题:

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

它的所有工厂方法,所以它是有或没有ARC相同的代码;自第一天起,OS X v10.2和iOS上已使用所用的方法。

相关问题