我正在尝试将NSArray的NSArray写入文档文件夹。我正在使用
BOOL fileWritten = [favoritesArray writeToFile:fullFileName atomically:NO];
if (fileWritten == NO) {
NSLog(@"Writing favoritesFileFailed");
}
以上不断返回NO。知道为什么这不会写吗?真正奇怪的是,这个相同的代码几天前正在运作。我读到了一些声明writeToFile无法处理复杂对象的内容。 NSDictionary会成为writeToFile无法保存的对象吗?
答案 0 :(得分:0)
是的,如果你有自定义对象,我会做一些NSCoding魔法然后你可以使用[NSKeyedArchiver archivedDataWithRootObject:favoritesArray]
因此,您需要确保该数组中的每个自定义类符合NSCoding
Reference,这应该有效。
答案 1 :(得分:0)
将NSDictionary
本身写入文件不是问题,但它所拥有的对象可能是。
通过使用与属性列表相关的简单I / O方法,您可以写出类NSArray
,NSDictionary
,NSData
,NSString
,{{1}的对象},NSNumber
及其任意组合(例如,词典数组)。
此外,它不会覆盖现有文件,所以你检查了吗?
答案 2 :(得分:0)
首先检查fullFileName
是否实际指向文档目录。
然后记住[NSArray: writeToFile:atomically:]
只能编写可以保存在plist文件中的数据类型:NSString,NSData,NSDictionary和NSArray - 这些将以递归方式验证!
答案 3 :(得分:0)
尝试使用简单对象保存简单数组。也许一个只有一个数字,看看问题是否仍然存在。如果没有,那么数组中的对象可能需要考虑保存在其他地方。
您是否尝试将其保存到NSUserDefaults
?如果一切都失败了,为什么不尝试呢?