我需要将一个NSDictionary
对象转换为NSData
,并且进一步从NSData
对象中获取相同的NSDictionary
。 我该如何处理?
我需要将一个NSDictionary
对象转换为NSData
,并且进一步从NSData
对象中获取相同的NSDictionary
。 我该如何处理?
使用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中获取NSDictionaryNSData *data = [[NSMutableData alloc]initWithContentsOfFile:YOURFILEPATH];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
YOURDICTIONARY = [unarchiver decodeObjectForKey: YOURDATAKEY];
[unarchiver finishDecoding];
[unarchiver release];
[data release];
Robert的回答简化版:
[NSKeyedArchiver archiveRootObject:YOURDICTIONARY toFile:YOURFILEPATH];
YOURDICTIONARY = [NSKeyedUnarchiver unarchiveObjectWithFile:YOURFILEPATH];
如果不把文件引入其中,回答最初的问题:
在IT技术中,该如何解决这个问题?NSData *data = [NSKeyedArchiver archivedDataWithRootObject:YOURDICTIONARY];
...
YOURDICTIONARY = [NSKeyedUnarchiver unarchiveObjectWithData:data];
这些都是工厂方法,因此无论是否使用ARC,代码都是相同的;使用的方法从OS X v10.2开始就已经可用,在iOS上也一直存在。