0

我有一个对象。它只有两个NSStrings作为属性。我需要使用NSKeyedArchiver吗?

我创建了一个数组来保存这些对象中的几个。

是否需要使用NSKeyedArchiver将此数组保存到磁盘,或者我可以只使用NSUserDefaults?

回答

0

您只能使用[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:myKey];进行书写,并使用[[NSUserDefaults standardUserDefaults] arrayForKey:myKey];进行阅读(因为不需要,因此不需要setArray:forKey:)。另外,如果你有一个你不想存储在NSUserDefaults内部的数组,那么写入和读取数组就很容易:-[NSArray writeToFile:atomically:]+[NSArray arrayWithContentsOfFile:]。 NSDictionary也有相同的方法来轻松读/写字典。当然你也可以随意使用NSKeyed(Un)Archiver。

+0

如果我尝试这样做,我会得到一个“尝试插入非属性值”错误。 – 2010-09-19 11:26:43

+0

@awakeFromNib:你做了什么?我只是验证了这个代码:'NSArray * array = [NSArray arrayWithObjects:@“One”,@“Two”,nil]; \t [[NSUserDefaults standardUserDefaults] setObject:array forKey:@“TestKey”];'它完全按照预期工作。 – DarkDust 2010-09-19 15:29:21

1

如果您的对象是自定义类,则在将内容放入NSUserDefaults之前,您需要使用NSKeyedArchiver。见here