我正在制作类似于苹果天气应用的应用。我的主视图有一个要显示的对象的NSMutableArray。该阵列由用户管理。我希望能够保存此数组,以便在重新启动应用程序时,它具有用户选择的内容。存储的对象是“事件”对象,它是一种自定义对象类型,存储更多自定义对象,这些对象都包含以下某些内容:NSString,NSNumber,NSUInteger,NSURL。我的研究让我得到了三个选项,其中没有一个我理解,也不知道如何实现:使用writeToFile保存到plist,存档数据或将其保存到userPrefs。 有人知道我的问题的解决方案吗?
示例数据对象: `
@interface Rider : NSObject {
NSString *name;
}
-(Rider *) initWithName:(NSString *) nam;
- (NSString *)description ;
@property (nonatomic, retain) NSString *name;
`
答案 0 :(得分:0)
你的问题本身就有答案。
将您的每个对象创建为字典,最后您将拥有一系列字典。 NSArray和NSDictionary具有将其数据写入文件的方法(首选plist)。如果你使用plist文件,它将很容易再次阅读。
答案 1 :(得分:0)
这三个选项中至少有两个是合理的。 NSUserDefaults实际上更多地用于存储应用程序首选项,而不是存储大量数据的选项,因此如果您有大量数据,则应首先考虑其他可能性。
属性列表易于读写,但您只能使用少数标准类型:NSString,NSData,NSArray,NSDate和NSNumber。你可以用这些类型做很多事情,但是因为使用属性列表涉及你自己的Event类所以不会那么简单。
归档似乎是最好的计划。您需要做的就是在自定义类中采用一个简单的协议NSCoding(并确保您使用的其他类,如NSArray,也实现NSCoding)。然后,创建NSKeyedArchiver的实例并要求它归档对象图。稍后重新创建对象图也很简单:使用文件的数据创建NSUnarchiver实例并取消归档对象。
您可以在Archives and Serializations Programming Guide中阅读有关归档和属性列表的信息。在你走得更远之前阅读那份文件。
还有其他选项 - 如果需要,您可以始终使用标准C文件操作直接写入文件。但是,这不太可能像存档一样方便。