首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSDictionary writeToFile

NSDictionary writeToFile
EN

Stack Overflow用户
提问于 2010-08-11 23:26:34
回答 4查看 11.6K关注 0票数 9

保存字典有大小限制吗?

我正在尝试使用writeToFile编写一个相当大的字典,其中包含大约100个键和嵌套字典:但它从来没有写过,而且总是假的。

这是一个限制,还是我做错了什么,

我使用的代码如下所示。

代码语言:javascript
复制
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSString *fullPath = [documentsDir stringByAppendingPathComponent:@"test.plist"];   

[myDict writeToFile: fullPath  atomically:YES];
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-11 23:46:22

没有大小限制(节省内存和磁盘空间)。

myDict的内容是什么

如果它不是属性列表中允许的一小部分类,那么就不能使用writeToFile:atomically:

要么需要将字典限制为只包含这些类的实例,要么需要使用不同的归档方法。

特别是,许多JSON库都会将NSNULL实例注入到集合中。这些都不能存档。您需要将它们编辑掉或替换为可以存档的对象。

相关性:

http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/PropertyLists/Introduction/Introduction.html

http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Archiving/Archiving.html#//apple_ref/doc/uid/10000047i

票数 12
EN

Stack Overflow用户

发布于 2011-11-13 02:12:23

这里还有一个技巧,除了只使用符合条件的对象( NSNumber、NSString、NSData等的实例)之外,键必须是NSString对象。通常,您可以使用任何对象作为NSDictionary密钥,但要获得成功的writeToFile: NSDictionary中的密钥必须是实例NSString。

票数 27
EN

Stack Overflow用户

发布于 2012-01-25 05:30:34

我还会再增加一个我在Lion上遇到的技巧。在调用NSDictionary的writeToFile:atomically:之前,要写入plist的文件夹必须存在。您可以使用NSFileManager测试是否存在,并在必要时创建一个新文件夹。

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

https://stackoverflow.com/questions/3460016

复制
相关文章

相似问题

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