使用NSUserDefaults存储自定义对象_第1页
使用NSUserDefaults存储自定义对象_第2页
使用NSUserDefaults存储自定义对象_第3页
使用NSUserDefaults存储自定义对象_第4页
使用NSUserDefaults存储自定义对象_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论