我必须将NSDictionary
对象转换为NSData
,而且还必须从NSData
对象中获得相同的NSDictionary
。我该怎么做呢?
发布于 2010-07-01 19:55:15
使用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中取回NSDictionary
NSData *data = [[NSMutableData alloc]initWithContentsOfFile:YOURFILEPATH];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
YOURDICTIONARY = [unarchiver decodeObjectForKey: YOURDATAKEY];
[unarchiver finishDecoding];
[unarchiver release];
[data release];
发布于 2014-08-09 01:23:41
罗伯特答案的一个简单版本:
[NSKeyedArchiver archiveRootObject:YOURDICTIONARY toFile:YOURFILEPATH];
并且,相应地:
YOURDICTIONARY = [NSKeyedUnarchiver unarchiveObjectWithFile:YOURFILEPATH];
或者按照最初的设置回答问题,而不是将文件归因于以下内容:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:YOURDICTIONARY];
...
YOURDICTIONARY = [NSKeyedUnarchiver unarchiveObjectWithData:data];
这都是工厂方法,所以不管有没有ARC,它都是相同的代码;使用的方法从OSXv10.2开始就可用,从第一天起就在iOS上。
https://stackoverflow.com/questions/3157356
复制相似问题