下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-.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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 呼啸山庄项目介绍
- 数学物理方法分离变量法
- 2025软考中级考试真题及答案
- 介绍日本乌冬面
- 学生宿舍照明系统设计方案
- 产后发热的口腔护理要点
- 社会性发展与教育
- 2026年艺术创作中的生态主题表达
- 接管物业合同
- 数据买卖交易合同
- 钟山区南开风电场环境影响报告表
- 云南航空产业投资集团招聘笔试真题2024
- 公司报废件物品管理制度
- 弱电智能化运维管理制度
- 施工队长解除协议书
- 河北省石家庄市七县2024-2025学年高二下学期4月期中考试 物理 含解析
- 2025春季学期国家开放大学专科《高等数学基础》一平台在线形考(形考任务一至四)试题及答案
- 2025年软件定义汽车:SOA和中间件行业研究报告
- 国家军事安全课件
- 泵站、滴灌、管灌水力计算表
- 驾校安全生产隐患排查治理制度
评论
0/150
提交评论