将自定义的类的数据以数组的形式直接存储到NSUserDefaults中会报错,需要进行转换,且需要将该类实现NSCoding协议。

e.g.

存储过程

NSMutableArray *archiveArr = [NSMutableArray arrayWithCapacity:self.STNArrayList.count];for (STNArrayList *singleList in self.STNArrayList) {NSData *listEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:singleList];[archiveArr addObject:listEncodedObject];}
//可以将archiveArr存入NSUserDefaults中了

读取过程

NSArray *localSavedArr = ;//从NSUserDefaults中读取本地存储的数据NSMutableArray *mutableArr = [NSMutableArray arrayWithCapacity:localSavedArr.count];for (NSData *data in localSavedArr) {STNArrayList *singleList = [NSKeyedUnarchiver unarchiveObjectWithData:data];[mutableArr addObject:singleList];}// 现在可以访问mutableArr来获得STNArrayList的值

在STNArrayList类中实现NSCoding协议

- (id)initWithCoder:(NSCoder *)aDecoder
{if (self == [super init]) {_title = [aDecoder decodeObjectForKey:JSON_KEY];}return self;
}- (void)encodeWithCoder:(NSCoder *)aCoder
{[aCoder encodeObject:_title forKey:JSON_KEY];
}

转载于:https://www.cnblogs.com/stonewong/p/4931630.html

在NSUserDefaults中存储自定义类型的数据相关推荐

  1. Java中Collection集合常用API - Collection存储自定义类型对象

    文章目录 Collection常用API Collection存储自定义类型对象 Collection常用API Collection集合API Collection是单列集合的祖宗接口,因此它的功能 ...

  2. AutoCAD .Net 在dwg文件中存储自定义数据

    问题 我需要在 dwg 文件中存储一些信息,以额外描述图形文件并使它能够和其它软件程序集成. 请问怎样才能在 dwg 文件中写入自定义数据并读取? 回答 你可以使用 Named Object Dict ...

  3. GreenDao存储自定义类型对象解决方案(转)

    最近公司项目选用GreenDao作为Android客户端本地数据库的对象关系映射框架.对于GreenDao虽然以往也有简单用过,但这还是笔者第一次在实际业务中使用.碰到了题目所述的两个问题,虽然在Tu ...

  4. 在配置文件(.settings、.config)中存储自定义对象

    引言 我前面曾写过一篇<使用配置文件(.settings..config)存储应用程序配置>,我在其中指出"settings无法实现对一些复杂类型及自定义类型的支持". ...

  5. HashSet存储自定义类型元素

    HashSet存储自定义类型元素 给HashSet中存放自定义类型元素时,需要重写对象中的hashCode和equals方法,建立自己的比较方式,才能保证HashSet集合中的对象唯一 创建自定义类 ...

  6. C语言中的自定义类型

    C语言中的自定义类型 (一)结构体 结构体的声明 结构体是一些值的集合,这些值称为成员变量,结构体的成员可以是不同类型的变量: 结构体的声明 struct tag { member-list; }va ...

  7. 在SQL数据库中存储纬度和经度数据时要使用的数据类型是什么? [重复]

    本文翻译自:What datatype to use when storing latitude and longitude data in SQL databases? [duplicate] Th ...

  8. 集合中存储自定义对象源代码

    集合中存储自定义对象: package attention;import java.util.ArrayList; import java.util.Collection; import java.u ...

  9. 本实例演示往TreeSet集合中存储自定义对象

    1 package JiHe.Set; 2 3 import java.util.Iterator; 4 import java.util.TreeSet; 5 6 /* 7 * 本实例演示往Tree ...

最新文章

  1. 关于组织参加2020年全国大学生智能汽车竞赛山东赛区比赛的通知
  2. Nodejs的模块系统以及require的机制
  3. ansible+powershell DSC 可以管理windows server了
  4. 给年轻程序员的几句话
  5. bug__android studio 出现布局文件不提示,且点击代码不能跟踪代码
  6. 计算机软件在矿井地质中的应用,(完整版)遥感导论知识点整理(梅安新版)
  7. 洛谷P3155:叶子的染色(树形dp)
  8. 使用PrimeFaces开发数据导出实用程序
  9. [转载] java虚拟机 jvm 出入java栈 栈空间内存分配
  10. 【C语言】输入一个字符串,并对字符串中的偶数位置的字符按从小到大的顺序排序,奇数位置的字符不动,输出排序后的结果...
  11. Centos7 安装mysql 需要自己下载 rpm
  12. iPhone 12s Pro渲染图曝光:屏幕和相机将成升级重点
  13. 【ElasticSearch】Es 源码之 SearchTransportService 源码解读
  14. 细数继承与派生(纯干货推荐)1.0
  15. 软件、硬件版本号命名规范
  16. 虚拟机桥接模式设置IP
  17. 用Python批量生成字幕图片用于视频剪辑
  18. java 及时释放内存_Java里可以自动释放的不只是内存,只要是“资源”,都可以自动释放!轻松加愉快!...
  19. python中国大学慕课网_高级语言程序设计(Python)中国大学慕课搜题网站
  20. vue项目中eslint规则校验配置

热门文章

  1. C++ 11 深度学习(三)范围for、new内存动态分配、nullptr
  2. LeetCode 面试题55 二叉树的深度
  3. LeetCode 344 反转字符串
  4. C/C++打造《百万级人脸识别系统》
  5. android 活动销毁不了,即使活动已经销毁,AsyncTask也不会停止
  6. python面向对象编程138讲_Python面向对象编程简单讲解
  7. android 多个复选框,Android UI控件之CheckBox(复选框、多选框)
  8. js 点击侧边栏展示内容_上海SEO优化网站侧边栏一般添加什么内容
  9. 网管交换机和非网管交换机有什么区别?
  10. 4G物联网网关和工业路由器的区别