如何将多级自定义对象保存到NSUserDefault?



我希望将一个精心设计的多层自定义对象保存到NSUserDefaults中。我的自定义类设置如下:

  • 教员
    • @属性(强,非原子)NSString*instructorName
    • @property(strong,nonatomic)NSMutableArray*类;//类对象的数组
  • 类别
    • @属性(强,非原子)NSString*className
    • @property(strong,nonatomic)NSMutableArray*students;//学生对象的数组
  • 学生
    • @属性(强,非原子)NSString*studentName
    • @属性(非原子)NSUInteger studentNumber
    • @财产(非原子)NSInteger studentMoney

我需要将顶级的"讲师"对象保存到NSUserDefault中,这样我就可以访问它下面的整个数据层。我已经参考了这篇文章,但我需要更多的帮助来解决它。在这个例子中,他展示了两个不同的类和一些方法。这些方法本身是否被写入了不同的自定义类中?我该如何在应用程序中实际使用它?

我需要保存一个"讲师"对象,它有一个类数组,其中填充了一个学生数组。如何将该讲师对象保存到NSUserDefault,以便检索并重新加载以供使用?

所有对象(讲师、类和学生)都需要采用并实现NSCoding协议。请参阅这篇文章以获得启示。正如@uchuugaka所说,听起来NSUserDefaults不是存储这些数据的地方。

您仍然可以将数据序列化到磁盘,但只需将其写入一个单独的文件即可。苹果的档案和系列编程指南是学习这种方法的基础知识的好读物。

如果您要保存的对象图将更加复杂,并且您需要搜索和查询对象图,例如,查找studentMoney>=50且lastName以"A"开头的学生人数,则您可能需要查看核心数据。然而,请注意,核心数据是一个高级框架,因此它确实有一个相当大的学习曲线。

最新更新