将NSDictionary对象转换为NSData对象,反之亦然

16

我需要将一个NSDictionary对象转换为NSData,并且进一步从NSData对象中获取相同的NSDictionary。 我该如何处理?

2个回答

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中获取NSDictionary
NSData *data = [[NSMutableData alloc]initWithContentsOfFile:YOURFILEPATH];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
YOURDICTIONARY = [unarchiver decodeObjectForKey: YOURDATAKEY];
[unarchiver finishDecoding];
[unarchiver release];
[data release];

2

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上也一直存在。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接