ios - 如何将多级自定义对象保存到 UserDefaults?

标签 ios objective-c nsuserdefaults

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

  • 讲师
    • @property (strong, nonatomic) NSString *instructorName;
    • @property (strong, nonatomic) NSMutableArray *classes;//类对象的数组
  • 类(class)
    • @property (strong, nonatomic) NSString *className;
    • @property (strong, nonatomic) NSMutableArray *students;//学生对象的数组
  • 学生
    • @property (strong, nonatomic) NSString *studentName;
    • @property (nonatomic) NSUInteger studentNumber;
    • @property (nonatomic) NSInteger studentMoney;

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

我需要保存一个“Instructor”对象,它有一组类(class),类(class)里有一组学生。我怎样才能将那个 instructor 对象保存到 NSUserDefault 中,以便我可以检索它并重新加载它以供使用?

最佳答案

所有对象(Instructor、Class、Student)都需要采用和实现NSCoding协议(protocol)。参见 this post for an implentation .正如@uchuugaka 所说,听起来 NSUserDefaults 不是存储这些数据的地方。

您仍然可以将数据序列化到磁盘,但只需将其写入一个单独的文件即可。苹果的Archives and Serializations Programming Guide是了解此方法基础知识的好书。

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

关于ios - 如何将多级自定义对象保存到 UserDefaults?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18479066/

相关文章:

iphone - 为什么 UISearchBar 显示不正确?

ios - 检测滑动删除按钮和在编辑模式下制作的删除按钮之间的区别?

xml - NSUserDefaults 和 NSPropertyListSerialization

objective-c - 我的应用程序应该在 iOS 上的什么位置存储大量 PDF 文件?

iphone - root.plist 更改在 iPhone 上不可见

iphone - iPhone 应用程序升级时强制重置 NSUserDefault

ios - 删除动态创建的 UIButton subview

ios - 现在 MPMoviePlayerPlaybackDidFinishReasonUserInfoKey 已被弃用,找到播放结束原因的最佳方法是什么?

iphone - 将大量数据写入 NSData 对象-iOS

objective-c - 如何为正确的构建系统自动选择 NSColor 和 UIColor? (使用#define 或其他东西)