利用NSUserdefaults来存储自定义的NSObject类及自定义类数组
1.利用NSUserdefaults来存储自定义的NSObject类
利用NSUserdefaults也可以来存储及获取自定义非框架类对象,不过自定义的NSObject类需要实现NSCoding协议(包含2个必须实现的方法)。存储过程是将自定义的NSObject转换成NSData存储。
存储:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:object];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:thekey];
[[NSUserDefaults standardUserDefaults] synchronize];
获取:
NSData *ldta = [[NSUserDefaults standardUserDefaults] objectForKey:thekey];
object = [NSKeyedUnarchiver unarchiveObjectWithData:data];
2.利用NSUserdefaults来存储自定义对象的数组
2.1 归档数组中存储的自定义类必须实现NSCoding协议
//WZToDoItem.h文件
#import <Foundation/Foundation.h>
@interface WZToDoItem : NSObject<NSCoding>
@property (copy,nonatomic) NSString *text;
@end //WZToDoItem.m文件
#import "WZToDoItem.h"
@implementation WZToDoItem
//NSCoding协议必须实现方法1
- (void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeObject:self.text forKey:@"TEXT"];
}
//NSCoding协议必须实现方法2
- (instancetype)initWithCoder:(NSCoder *)aDecoder {
if (self = [super init]) {
self.text = [aDecoder decodeObjectForKey:@"TEXT"];
}
return self;
}
@end
2.2 将包含自定义WZToDoItem对象的数组转换成NSData来存储
- (void)viewDidLoad { //创建自定义对象的数组arrayM
NSMutableArray *arrayM = [NSMutableArray array];//可变数组初始化才能用
for (int i = ; i < arr.count; i++) {
WZToDoItem *toDoItem = [[WZToDoItem alloc]init];
toDoItem.text = [NSString stringWithFormat:@"这是第%d个代办事项",i];
[arrayM addObject:toDoItem];
}
//存储
NSUserDefaults *userDfs = [NSUserDefaults standardUserDefaults];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arrayM];
[userDfs setObject:data forKey:@"toDoItems"];
[userDfs synchronize]; //获取
NSData *data = [[NSUserDefaults standardUserDefaults] dataForKey:@"toDoItems"];
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data]; }
利用NSUserdefaults来存储自定义的NSObject类及自定义类数组的更多相关文章
-
(bug更正)利用KVC和associative特性在NSObject中存储键值
KVC 一直没仔细看过KVC的用法,想当然的认为可以在NSObject对象中存入任意键值对,结果使用时碰到问题了. 一个简单的位移动画: CAKeyframeAnimation *keyPosi=[C ...
-
IOS开发---菜鸟学习之路--(十九)-利用NSUserDefaults存储数据
利用NSUserDefaults的可以快速的进行本地数据存储,但是支持的格式有限, 至于支持什么格式大家可以再自行脑补 我这边直接讲如何使用 NSUserDefaults 分为两部分 一个是存数据 N ...
-
iOS - OC NSUserDefaults		数据存储
前言 @interface NSUserDefaults : NSObject 用来保存应用程序设置和属性.用户保存的数据.用户再次打开程序或开机后这些数据仍然存在.如果往 userDefaults ...
-
iOS - Swift NSUserDefaults		数据存储
前言 public class NSUserDefaults : NSObject 用来保存应用程序设置和属性.用户保存的数据.用户再次打开程序或开机后这些数据仍然存在.如果往 userDefault ...
-
[转]掌握 ASP.NET 之路:自定义实体类简介 --自定义实体类和DataSet的比较
转自: http://www.microsoft.com/china/msdn/library/webservices/asp.net/CustEntCls.mspx?mfr=true 发布日期 : ...
-
python中面向对象元类的自定义用法
面向对象中的常用方法 1.instance 和 issubclass instance :判断两个对象是不是一类 issubclass :判断某个类是不是另一个类的子类 #两个常用方法的使用 clas ...
-
修改tt模板让ADO.NET C# POCO Entity Generator With WCF Support 生成的实体类继承自定义基类
折腾几天记载一下,由于项目实际需要,从edmx生成的实体类能自动继承自定义的基类,这个基类不是从edmx文件中添加的Entityobject. 利用ADO.NET C# POCO Entity Gen ...
-
在Visual Studio中使用Debug Visualizers在C++中实现对原始类的自定义调试信息显示
在Visual Studio中使用Debug Visualizers在C++中实现对原始类的自定义调试信息显示 当我们在VS的C++中使用vector.list.map等这些STL容器,在开启调试的时 ...
-
python+selenium之自定义封装一个简单的Log类
python+selenium之自定义封装一个简单的Log类 一. 问题分析: 我们需要封装一个简单的日志类,主要有以下内容: 1. 生成的日志文件格式是 年月日时分秒.log 2. 生成的xxx.l ...
随机推荐
-
赠书:HTML5 Canvas 2d 编程必读的两本经典
赠书:HTML5 Canvas 2d 编程必读的两本经典 这两年多一直在和HTML5 Canvas 打交道,也带领团队开发了世界首款基于HTML5 Canvas 的演示文档工具---AxeSlide( ...
-
linux-关机出现Telling INIT to go to single user mode.无法关机
运行/sbin/shutdown now最后显示:Telling INIT to go to single user mode.INIT:Going single userINIT:Sending g ...
-
虚拟机中的centos在nat模式下连不上外网
这两天需要配置ftp服务器,可是虚拟机在nat模式下死活连不上外网,主机能够通过该ssh与虚拟机进行连接,虚拟机也能ping同一网段主机的IP地址,但就是ping不通外网, 开始我是这样配置的: 主机 ...
-
[Xamarin] 關於SQLite 的操作 (转帖)
我們聊一下常用的東西,SQLite,這東西很常用到,當再寫手機APP的時候,有時候會在Client 做 cache或是做一些資料的管理都很必須會用到,我們來看看今天的範例 建立SQL Lite 資料庫 ...
-
Microsoft Power BI Designer
1/25/2015年1月25发布的预览版本,可以通过以下地址下载,注意有x64 和x32 版本区别(和上次PowerMap一样,一般也推荐的使用x64版本) http://www.microsoft. ...
-
↗☻【HTML5秘籍 #BOOK#】第4章 Web表单
from元素用于组织所有表单部件,负责告诉浏览器把数据提交到哪里,方法是在action属性中提供一个URL.假如你只想在客户端使用JavaScript操作表单,那么只要在action属性中指定一个#即 ...
-
Angularjs^1.2.9 搜索关键字高亮显示
需求分析: 根据关键字搜索网页内容,并且高亮显示内容中的关键字细节分析: 1.每次执行搜索操作,需清空上一次结果 2.需区分html标签和正常文本内容,否则为关键字添加样式以后会出现标签内容被显示的情 ...
-
js中的语句
java语句与js的语句一样.1.判断if else/switch <script type=text/javascript> function fun1(){ var num = 10; ...
-
hdu3340 线段树+多边形
Rain in ACStar Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
-
ES6常用方法总结
1.声明变量用let,声明常量用const(定义唯一的值),都没有预解释,也不存在变量提升: 2.箭头函数:有如下两种写法 1).表达式(函数体只有一行代码) a).let fn = p => ...