0

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

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

以上不断返回NO。知道为什么这不会写吗?真正奇怪的是几天前同样的代码还在工作。我读到一些东西说 writeToFile 不能处理复杂的对象。NSDictionary 会是 writeToFile 无法保存的对象吗?

4

4 回答 4

0

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

因此,您需要确保该数组中的每个自定义类都符合NSCoding Reference并且应该可以工作。

于 2012-06-19T14:27:38.933 回答
0

NSDictionary自身写入文件不是问题,但它保存的对象可能是。

通过使用简单的属性列表相关的 I/O 方法,您可以写出类的对象NSArrayNSDictionaryNSDataNSStringNSNumberNSDate以及它们的任意组合(例如,字典数组)。

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

于 2012-06-19T14:33:19.783 回答
0

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

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

于 2012-06-19T14:35:18.507 回答
0

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

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

于 2012-06-19T15:20:17.420 回答