保存字典有大小限制吗?
我正在尝试使用writeToFile编写一个相当大的字典,其中包含大约100个键和嵌套字典:但它从来没有写过,而且总是假的。
这是一个限制,还是我做错了什么,
我使用的代码如下所示。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSString *fullPath = [documentsDir stringByAppendingPathComponent:@"test.plist"];
[myDict writeToFile: fullPath atomically:YES];发布于 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
发布于 2011-11-13 02:12:23
这里还有一个技巧,除了只使用符合条件的对象( NSNumber、NSString、NSData等的实例)之外,键必须是NSString对象。通常,您可以使用任何对象作为NSDictionary密钥,但要获得成功的writeToFile: NSDictionary中的密钥必须是实例NSString。
发布于 2012-01-25 05:30:34
我还会再增加一个我在Lion上遇到的技巧。在调用NSDictionary的writeToFile:atomically:之前,要写入plist的文件夹必须存在。您可以使用NSFileManager测试是否存在,并在必要时创建一个新文件夹。
https://stackoverflow.com/questions/3460016
复制相似问题