iOS中NSUserDefaults详解
NSUserDefault 作为iOS中一种轻量级数据本地化方式,简单易用,经常用于存储一些应用相关属性记录,例如图书app的背景色,进度,上次阅读的书籍及相关配置信息。NSUserDefault实质上是iOS为用户封装好的一个特殊的plist文件,该plist文件存于app沙盒目录下的library/Preferences中,并且以应用的appid命名。有兴趣的可以看一下。
如下具体用法:
/* 存储一个数组 */
NSArray *array1 = @[@"1",@"2",@"3"];
/* 该方法仅限于存储系统中不多的数据类型 NSString、NSNumber、NSDictionary、NSArray等 */
[[NSUserDefaults standardUserDefaults] setValue:array1 forKey:@"testArr"];
/* 取该数组 尽量使用值对应的数据类型来接收值 如果不知道存储值的数据类型 可以使用id类型接收 */
NSArray *valueArr = [[NSUserDefaults standardUserDefaults] valueForKey:@"testArr"];
/* 存储bool值 实质上被系统转化为了NSNumber类型存储 */
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"IsFirstIn"];
/* !注意 synchronize方法是同步本地文件使用的(实质上,如果不调用该方法,我们上面的操作只是保存在缓存中,并没有真正的写入plist文件,系统会在一定的环境条件下如系统正常退出时同步文件,将数据写入本地plist文件。因此,如果不发送这个消息,如果系统异常退出, 可能会造成数据未保存的情况) 。 */
[[NSUserDefaults standardUserDefaults] synchronize];
/* 移除一条数据 */
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"testArr"];
/* 清空所有的NSUserDefaults存储的数据 有两种方法 */
/* 第一种 遍历plist文件中的键值对 一一移除 */
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
/* 获取所有的数据 包括隐藏的系统部分属性 */
NSDictionary *dic = [userDefaults dictionaryRepresentation];
for (id key in dic) {
[userDefaults removeObjectForKey:key];
}
[userDefaults synchronize];
/* 第二种 直接清空指定plist文件 */
NSString *boundName = [[NSBundle mainBundle] bundleIdentifier];
/* 从用户的默认值中移除指定的持久化域的内容 */
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:boundName];
/* 同理可以使用set方法添加一个本地plist文件 */
[[NSUserDefaults standardUserDefaults] setPersistentDomain:@{@"Root":@"testRoot"} forName:@"TestFile"];
JHLog(@"%@",NSHomeDirectory());
/* 通知 在对本地plist文件进行数据操作时 系统提供了一些通知来提醒用户 如在使用setPersistentDomain方法时会post NSUserDefaultsDidChangeNotification 通知 这些功能使用较少 需要的朋友最好看一下官方文档 */
/* 小技巧提示 在使用NSUserDefaults时函数名较长,可以在pch文件中进行宏定义扩展 简化使用过程 如
#define JH_AnyDefaults(a) [[NSUserDefaults standardUserDefaults] valueForKey:a] */
iOS中NSUserDefaults详解的更多相关文章
- iOS中-Qutarz2D详解及使用
在iOS中Qutarz2D 详解及使用 (一)初识 介绍 Quartz 2D是二维绘图引擎. 能完成的工作有: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成 ...
- 转载]IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本 )
原文地址:IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本作者:佐佐木小次郎 因为最近项目上要用有关LBS的功能.于是我便做一下预研. 一般说来LBS功能一般分为两块:一块是地理 ...
- iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)
前言:一个路径可以包含由一个或者多个shape以及子路径subpath,quartz提供了很多方便的shape可以直接调用.例如:point,line,Arc(圆弧),Curves(曲线),Ellip ...
- iOS开发:详解Objective-C runTime
Objective-C总Runtime的那点事儿(一)消息机制 最近在找工作,Objective-C中的Runtime是经常被问到的一个问题,几乎是面试大公司必问的一个问题.当然还有一些其他问题也几乎 ...
- iOS应用开发详解
<iOS应用开发详解> 基本信息 作者: 郭宏志 出版社:电子工业出版社 ISBN:9787121207075 上架时间:2013-6-28 出版日期:2013 年7月 开本:16开 ...
- 了解iOS消息推送一文就够:史上最全iOS Push技术详解
本文作者:陈裕发, 腾讯系统测试工程师,由腾讯WeTest整理发表. 1.引言 开发iOS系统中的Push推送,通常有以下3种情况: 1)在线Push:比如QQ.微信等IM界面处于前台时,聊天消息和指 ...
- iOS开发者证书-详解
iOS开发者证书-详解/生成/使用 本文假设你已经有一些基本的Xcode开发经验, 并注册了iOS开发者账号. 相关基础 加密算法 现代密码学中, 主要有两种加密算法: 对称密钥加密 和 公开密钥加密 ...
- iOS开发-Runtime详解
iOS开发-Runtime详解 简介 Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的.比如: [recei ...
- winxp计算机管理中服务详解
winxp计算机管理中服务详解01 http://blog.sina.com.cn/s/blog_60f923b50100efy9.html http://blog.sina.com.cn/s/blo ...
随机推荐
- 一段可以使用的 hibernate获得对象->action存入List->jsp页面用<s:iterator>迭代的代码
SelectAction.java @SuppressWarnings("serial") @Component("selectAction") @Scope( ...
- POJ 2948 Martian Mining
Martian Mining Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 2251 Accepted: 1367 Descri ...
- 【PHP面向对象(OOP)编程入门教程】2.什么是类,什么是对象,类和对象这间的关系
类的概念:类是具有相同属性和服务的一组对象的集合.它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分.在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属 ...
- CMD代码页
不同字符编码在CMD模式下会出现乱码,需要使用 chcp 代码页 命令来更改代码页显示正常. UTF-8 65001 简体中文 936 437 美国 850 多语 ...
- HDU 5038 Grade北京赛区网赛1005
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5038 解题报告:就是输入n个数w,定义s = 10000 - (100 - w)^2,问s出现频率最高 ...
- NSTimer用法,暂停,继续,初始化
NSTimer用法,暂停,继续,初始化 转载:http://blog.csdn.net/zhuzhihai1988/article/details/7742881 NSTimer的使用方法 1.初始化 ...
- Nmap扫描手册
By:WHILE扫描类-sTTCP connect()扫描,完整的通话连接,容易被检测,会被记录日志.-sSTCP同步扫描,不完整的通话连接,很少有系统会记入日志.-sUUDP扫描-sAACK扫描用来 ...
- 跟着百度学PHP[4]-OOP面对对象编程-2-属性和方法
简单的说 变量就是成员属性函数就是成员方法(方法有三:构造方法[即为__construct].成员方法.析构方法[__destruct]) 成员方法和成员属性都是可以加修饰词.比如封装性的方法或者属性 ...
- Hello 2016
Hello 2016 I am really happy to work and study here. Nothing is better than be oneself ! It's import ...
- Hibernate中的GetCurrentSession()方法
从3.0.1版本开 始,Hibernate增加了SessionFactory.getCurrentSession()方法. 采用getCurrentSession()创建的session在commit ...