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

时间:2013-08-28 03:44:06

标签: ios objective-c nsuserdefaults

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

  • 讲师
    • @property(强,非原子)NSString * instructorName;
    • @property(强,非原子)NSMutableArray *类; //类对象的数组
    • @property(强,非原子)NSString * className;
    • @property(强大,非原子)NSMutableArray *学生; //学生对象的数组
  • 学生
    • @property(强,非原子)NSString * studentName;
    • @property(nonatomic)NSUInteger studentNumber;
    • @property(nonatomic)NSInteger studentMoney;

我需要将顶级“讲师”对象保存到NSUserDefault中,以便我可以访问它下面的整个数据层。我引用了this post,但我需要更多帮助才能解决问题。在那个例子中,他展示了两个不同的类和一些方法。这些方法是自己写入不同的自定义类吗?我将如何在我的应用程序中实际使用它?

我需要保存一个“讲师”对象,它有一个类的数组,里面装满了一系列学生。如何将一个教师对象保存到NSUserDefault中,以便我可以检索并重新加载它以供使用?

1 个答案:

答案 0 :(得分:2)

所有对象(讲师,班级和学生)都需要采用并实施NSCoding协议。见this post for an implentation。正如@uchuugaka所说,听起来NSUserDefaults并不是存储这些数据的地方。

您仍然可以将数据序列化到磁盘,但只需将其写入单独的文件即可。 Apple的Archives and Serializations Programming Guide很适合学习这种方法的基础知识。

如果要保存的对象图要复杂得多,并且需要搜索和查询对象图,例如查找studentDoney> = 50且lastName以' A'开头的学生人数,然后您可能需要查看Core Data。但是,请注意Core Data是一个高级框架,因此它确实具有相当大的学习曲线。