首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将NSDictionary对象转换为NSData对象,反之亦然

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

Stack Overflow用户
提问于 2010-07-01 19:39:22
回答 2查看 12.7K关注 0票数 16

我必须将NSDictionary对象转换为NSData,而且还必须从NSData对象中获得相同的NSDictionary。我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-01 19:55:15

使用NSKeyedArchiver

将NSDictionary转换为NSData的步骤

代码语言:javascript
复制
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

代码语言:javascript
复制
NSData *data = [[NSMutableData alloc]initWithContentsOfFile:YOURFILEPATH];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
YOURDICTIONARY = [unarchiver decodeObjectForKey: YOURDATAKEY];
[unarchiver finishDecoding];
[unarchiver release];
[data release];
票数 32
EN

Stack Overflow用户

发布于 2014-08-09 01:23:41

罗伯特答案的一个简单版本:

代码语言:javascript
复制
[NSKeyedArchiver archiveRootObject:YOURDICTIONARY toFile:YOURFILEPATH];

并且,相应地:

代码语言:javascript
复制
YOURDICTIONARY = [NSKeyedUnarchiver unarchiveObjectWithFile:YOURFILEPATH];

或者按照最初的设置回答问题,而不是将文件归因于以下内容:

代码语言:javascript
复制
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:YOURDICTIONARY];
...
YOURDICTIONARY = [NSKeyedUnarchiver unarchiveObjectWithData:data];

这都是工厂方法,所以不管有没有ARC,它都是相同的代码;使用的方法从OSXv10.2开始就可用,从第一天起就在iOS上。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3157356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档