下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-.z.一、了解NSUserDefaults以及它可以直接存储的类型
NSUserDefaults是一个单例,在整个程序中只有一个实例对象,他可以用于数据的永久保存,而且简单实用,这是它可以让数据自由传递的一个前提,也是大家喜欢用它保存简单数据的一个主要原因。使用NSUserDefaults存储自定义对象的最初,我们必须认识NSUserDefaults可以存储哪一些类型的数据,下面一一列出:NSUserDefaults支持的数据类型有:NSNumber〔NSInteger、float、double〕,NSString,NSDate,NSArray,NSDictionary,BOOL.如果想要将上述数据类型的数据永久保存到NSUserDefaults中去,只需要简单的操作(一个Value一个Key),例如,想要保存一个NSString的对象,代码实现为:
//将NSString
对象存储到
NSUserDefaults
中
NSString
*passWord
=
"1234567";
NSUserDefaults
*user
=
[NSUserDefaults
standardUserDefaults];
[user
setObject:passWord
forKey:"userPassWord"];将数据取出也很简单,只需要取出key对应的值就好了,代码如下:
NSUserDefaults
*user
=
[NSUserDefaults
standardUserDefaults];
NSString
*passWord
=
[
user
objectForKey:"userPassWord"];注意:对一样的Key赋值约等于一次覆盖,要保证每一个Key的唯一性值得注意的是:
NSUserDefaults存储的对象全是不可变的〔这一点非常关键,弄错的话程序会出bug〕,例如,如果我想要存储一个NSMutableArray对象,我必须先创立一个不可变数组〔NSArray〕再将它存入NSUserDefaults中去,代码如下:
NSMutableArray
*mutableArray
=
[NSMutableArray
arrayWithObjects:"123","234",
nil];
NSArray
*
array
=
[NSArray
arrayWithArray:mutableArray];
NSUserDefaults
*user
=
[NSUserDefaults
standardUserDefaults];
[user
setObject:array
forKey:"记住存放的一定是不可变的"];取出数据是一样的,想要用NSUserDefaults中的数据给可变数组赋值先给出一个错误的写法:
/*-------------------------错误的赋值方法-------------------*/
NSUserDefaults
*user
=
[NSUserDefaults
standardUserDefaults];
//这样写后,mutableArray
就变成了不可变数组了,如果你要在数组中添加或删除数据就会出现bug
NSMutableArray
*mutableArray
=
[user
objectForKey:"记住存放的一定是不可变的"];正确的写法:
/*-------------------------正确的赋值方法-------------------*/
NSUserDefaults
*user
=
[NSUserDefaults
standardUserDefaults];
//可以用alloc
方法代替
NSMutableArray
*mutableArray
=
[NSMutableArray
arrayWithArray:[user
objectForKey:"记住存放的一定是不可变的"]];二、使用NSUserDefaults存储自定义对象1、将自定义类型转换为NSData类型当数据重复而且多的时候〔例如想存储全班同学的**,,性别〔这个数据量可能太大了〕〕,如果不用SQLite
存储〔多数据最好还是用这个〕,你可以选择使用归档,再将文件写入本地,但是这种方式和NSUserDefaults
比起来麻烦多了〔因为NSFileManage本来就挺复杂〕,但是问题是,NSUserDefaults
本身不支持自定义对象的存储,不过它支持NSData的类型,下面举一个例子来介绍。我们先建立一个叫Student的类,这个类里有三个属性〔**,,性别〕,如图:我们要做的就是将Student类型变成NSData类型,则就必须实现归档:这里要实现在.h文件中申明NSCoding
协议,再在.m中实现encodeWithCoder
方法和initWithCoder
方法就可以了:.h中修改文件如图:.m中参加代码:这样做就可以将自定义类型转变为NSData类型了2、将自定义类型数据存入NSUserDefaults中如果要存储全班同学的信息,我们可以建一个NSMutableArray来存放全班同学的信息〔里面存储的全是NSData对象〕在需要存储的地方参加代码://首先,要建立一个可变数组来存储
NSDate对象
Student
*student
=
[[Student
alloc]
ini];
//下面进展的是对student对象的
name
,
studentNumber
,se*
的赋值
=
"lady-奕奕";
student.studentNumber
=
"3100104006";
student.se*
=
"女";
//这是一个存放全班同学的数组
NSMutableArray
*
dataArray
=
[NSMutableArray
arrayWithCapacity:50];
//将student类型变为NSData类型
NSData
*data
=
[NSKeyedA
archivedDataWithRootObject:student];
//存放数据的数组将data参加进去
[dataArray
addObject:data];如果你只想存一个人的信息,你可以直接将NSData存入NSUserDefaults中:
NSData
*data
=
[NSKeyedArchiver
archivedDataWithRootObject:student];
NSUserDefaults
*user
=
[NSUserDefaults
standardUserDefaults];
[user
setObject:data
forKey:"oneStudent"];如果你想存储全班同学的信息,你还要用一个for循环将data放入dataArray中,这里具体的操作就不实现了,只给出存放的代码:
//记住要转换成不可变数组类型
NSArray
*
array
=
[NSArray
arrayWithArray:dataArray];
NSUserDefaults
*user
=
[NSUserDefaults
standardUserDefaults];
[user
setObject:array
forKey:"allStudent"];从NSUserDefaults中取出数据在复原也很简单例如复原一个学生的数据:NSUserDefaults
*user
=
[NSUserDefaults
standardUser
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四川雅安芦山县汉嘉实业有限公司招聘7人备考题库及参考答案详解(综合卷)
- 壤塘县2026年社会工作服务政策性岗位招募(5人)考前冲刺试卷及答案详解1套
- 2026浙江宁波某机关事业单位招驾驶员1人(7-30)备考题库含答案详解(突破训练)
- 2026年鸡西市恒山区恒山小学招聘临时聘用人员2人考前冲刺密卷及参考答案详解【预热题】
- 2026江苏扬州经济技术开发区教育管理人才选聘2人模拟试卷及完整答案详解(网校专用)
- 2027年梅山职业学院高职单招职业技能考试模拟试卷含答案详解【能力提升】
- 焊接基础知识教学设计中职专业课-金属加工基础-机械类-装备制造大类
- 物理必修11实验:探究小车速度随时间变化的规律教案
- 英语六年级下册Unit3Weshouldlearntotakecareofourselves教案
- 三年级下册科学教学设计-3.1 认识固体 苏教版
- GB 44721-2026智能网联汽车自动驾驶系统安全要求
- 2026山东青岛广电影视传媒集团有限公司二次招聘24人笔试题库【典型题】附答案详解
- 2026年浙江中考(语文)真题带答案
- 2026年医师定期考核考试题库及答案
- 2026年重庆市渝中区中考二模语文试卷
- 急性ST段抬高型心肌梗死诊断和治疗指南(2019)解读
- 2026-2030轨道钢产业市场深度调研及发展趋势与投资前景研究报告
- 养老护理记录规范与书写
- 2026光纤氧气传感在煤矿安全监测中的推广应用报告
- 灼口汤治疗灼口综合征的临床观察与疗效探究
- 儿童绘本故事《谁偷了我的饼》教学设计
评论
0/150
提交评论