将一组字典写入文档?

时间:2012-06-19 14:15:36

标签: iphone objective-c cocoa-touch nsarray foundation

我正在尝试将NSArray的NSArray写入文档文件夹。我正在使用

BOOL fileWritten = [favoritesArray writeToFile:fullFileName atomically:NO];
    if (fileWritten == NO) {
        NSLog(@"Writing favoritesFileFailed");
    }

以上不断返回NO。知道为什么这不会写吗?真正奇怪的是,这个相同的代码几天前正在运作。我读到了一些声明writeToFile无法处理复杂对象的内容。 NSDictionary会成为writeToFile无法保存的对象吗?

4 个答案:

答案 0 :(得分:0)

是的,如果你有自定义对象,我会做一些NSCoding魔法然后你可以使用[NSKeyedArchiver archivedDataWithRootObject:favoritesArray]

因此,您需要确保该数组中的每个自定义类符合NSCoding Reference,这应该有效。

答案 1 :(得分:0)

NSDictionary本身写入文件不是问题,但它所拥有的对象可能是。

通过使用与属性列表相关的简单I / O方法,您可以写出类NSArrayNSDictionaryNSDataNSString,{{1}的对象},NSNumber及其任意组合(例如,词典数组)。

此外,它不会覆盖现有文件,所以你检查了吗?

答案 2 :(得分:0)

首先检查fullFileName是否实际指向文档目录。

然后记住[NSArray: writeToFile:atomically:]只能编写可以保存在plist文件中的数据类型:NSString,NSData,NSDictionary和NSArray - 这些将以递归方式验证!

答案 3 :(得分:0)

尝试使用简单对象保存简单数组。也许一个只有一个数字,看看问题是否仍然存在。如果没有,那么数组中的对象可能需要考虑保存在其他地方。

您是否尝试将其保存到NSUserDefaults?如果一切都失败了,为什么不尝试呢?