【发布时间】:2010-09-19 10:08:08
【问题描述】:
我有一个对象。它只有两个 NSStrings 作为属性。
我创建了一个数组来保存其中的几个对象。
我需要使用 NSKeyedArchiver 将这个数组保存到磁盘,还是可以只使用 NSUserDefaults?
【问题讨论】:
标签: objective-c arrays cocoa-touch nsuserdefaults nskeyedarchiver
我有一个对象。它只有两个 NSStrings 作为属性。
我创建了一个数组来保存其中的几个对象。
我需要使用 NSKeyedArchiver 将这个数组保存到磁盘,还是可以只使用 NSUserDefaults?
【问题讨论】:
标签: objective-c arrays cocoa-touch nsuserdefaults nskeyedarchiver
如果您的对象是自定义类,则需要在将内容放入NSUserDefaults 之前使用NSKeyedArchiver。见here。
【讨论】:
您可以只使用[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:myKey]; 进行写作,使用[[NSUserDefaults standardUserDefaults] arrayForKey:myKey]; 进行阅读(没有setArray:forKey:,因为它不需要)。
此外,如果您有一个不想存储在 NSUserDefaults 中的数组,则可以轻松地写入和读取数组:-[NSArray writeToFile:atomically:] 和 +[NSArray arrayWithContentsOfFile:]。 NSDictionary 也有相同的方法来轻松读/写字典。当然,您也可以随时使用 NSKeyed(Un)Archiver。
【讨论】:
NSArray *array = [NSArray arrayWithObjects:@"One", @"Two", nil]; [[NSUserDefaults standardUserDefaults] setObject:array forKey:@"TestKey"];,它的工作原理完全符合预期。