博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十二天--Property List和NSUserDefaults
阅读量:7211 次
发布时间:2019-06-29

本文共 1617 字,大约阅读时间需要 5 分钟。

转自:http://appleparty.diandian.com/post/2012-05-24/9098104219

Property List  (属性表)

定义:Property List文件是一种用来存储序列化后的对象 的文件。属性列表文件的文件扩展名 为.plist,因此通常被称为 plist 文件。

pl是一种格式,包含了(NSData,NSString,NSNumber,NSDate,NSArray,NSDictionary  这六种任意组合创建的结构体)。

NSUserDafults相当于一个缓存,而plist是一个文件。

NSUserDefault,它其实也是以property list 的形式来存储的,但是它有限制,比如说NSColor和NSFont等类型式不能够直接存储的,我们必须要转换他们,要把他们转换成NSData类型来存。

总结一下就是说,plist 文件和NSUserDefaults都是存储文件的一种方法。至于plist怎么储存,等要用的时候再来补充,先了解。

 

 

NSUserDefaults

定义:

1. NSUserDefaults类用于保存应用程序设置和属性以及用户数据。例如,你可以存储用户在应用程序中使用的图片或默认颜色方案,或者背景等。这些对象存储在iOS所谓的“defaults系统”中。

2. iOS的defaults系统在整个app中都是可用的,因此存放到defaults系统中的数据也是整个应用程序生命周期中可用的。也就是说,无论用户关闭程序还是关机,在用户再次打开程序或开机后这些数据仍然存在。

3. 从NSUserDefaults返回的值是不可改变的,即便是你在存储的时候使用的是可变的值。例如你使用mutable string做为“MyStringDefault”的值,当你做使用stringForKey:方法获取的值,这个值仍然是不可变的。 

4. NSUserDefaults是单例,同时也是线程安全的 

5. NSUserDefaults可以存储的数据类型只能是property list类型的数据。(NSData,NSString,NSNumber,NSDate,NSArray,NSDictionary)

如果你想保存其他类型,如UIImage,你应该进行编码(即archive),或者将它转换为NSData、NSNumber或者NSString。

 

方法

一.得到共享的NSUserDefaults实例

+ (NSUserDefaults *)standardUserDefaults    

 

二.初始化一个NSUserDefaults对象

- (id)initWithUser:(NSString *)username

 

三.记录默认值

 

四.得到默认值。

得到数据时候用的方法,作用可以通过方法名轻松看出。

 

五.设置默认值

写入数据时候的方法。

 

六.删除某个默认值

 

七.维护持久域

八.访问管理环境的keys

 

九.管理查找列表

十.维护不稳定域

十一.维护程序组

 

 

如何使用NSUserDefaults?

你可以把它当做是一个小型的数据库,在存储和读取数据之前,你需要调用方法:     standardUserDefaults :

如:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

我把这个方法理解为,打开数据库的大门,这样你就可以对里面的数据做各种操作,也可以将存储数据进来。

存储数据和读取数据有各种方法,需要注意的是,存储数据需要完成方法 synchronize:,这个方法完成的作用是同步数据,也就是将你做出改变的数据更新。

如:

[defaults synchronize];

 

应该说这两个知识点了解的都不是很透彻,因为现在也用不上,所以就先以了解为主,等以后正式学习的时候再补充。

转载地址:http://ogeum.baihongyu.com/

你可能感兴趣的文章
Windows系统下,使用Emacs+Putty操作远程机器
查看>>
ORA-00600:[kclchkinteg_2]及[kjmsm_epc]内部错误一例
查看>>
【Linux】基础每日一命之cut&mv&scp命令
查看>>
浪擎全融合灾备云获大数据安全领域最佳创新奖
查看>>
建议重写equals方法时也一并重写hashCode方法
查看>>
根据post请求调取app接口,map对象转字符串,json对象转字符串
查看>>
jenkins添加linux作为slave
查看>>
nginx学习(一):基本安装
查看>>
Oracle Enterprise Manager 11g 启停
查看>>
RabbitMQ详解(一)
查看>>
基于DNS实现智能化访问网站
查看>>
单主机Docker容器VLAN划分
查看>>
利用SVN的post-commit钩子实现多项目自动同步
查看>>
Jmeter3.1官方自带的HTML图形测试报告 + 汉化
查看>>
文件共享存储&&主备实时热备实现方案
查看>>
一文看懂迁移学习:怎样用预训练模型搞定深度学习?
查看>>
Elasticsearch 5.3 集群搭建
查看>>
linux基础命令练习1
查看>>
【MySQL】【高可用】从masterha_master_switch工具简单分析MHA的切换逻辑
查看>>
xargs 和 exec详解
查看>>