NSDictionary writeToFile

jod*_*odm 9 objective-c nsdictionary

保存词典是否有大小限制?

我试图使用writeToFile编写一个包含大约100个带嵌套字典的密钥的相当大的字典:但它永远不会写入并且始终为false.

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

我使用的代码如下.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSString *fullPath = [documentsDir stringByAppendingPathComponent:@"test.plist"];   

[myDict writeToFile: fullPath  atomically:YES];
Run Code Online (Sandbox Code Playgroud)

Otu*_*tuk 27

还有一个技巧,除了只使用符合条件的对象(NSNumber,NSString,NSData等实例)之外,键必须是NSString对象.通常,您可以将任何对象用于NSDictionary键,但要成功使用writeToFile:NSDictionary中的键需要是实例NSString.

  • 我在使用writeToFile保存NSDictionary时遇到了麻烦,这个答案帮助我解决了我遇到的问题.像这样的怪癖可能是如此愚蠢地浪费时间来排除故障. (7认同)

bbu*_*bum 12

没有大小限制(除了内存和磁盘空间).

有什么内容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

  • 我有同样的问题,问题是字典中的[NSNull null]对象:) (5认同)

小智 5

我还要添加一个我在 Lion 上遇到的技巧。在调用 NSDictionary 的writeToFile:atomically:. 您可以使用 NSFileManager 来测试是否存在并在必要时创建一个新文件夹。