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详解的更多相关文章

  1. iOS中-Qutarz2D详解及使用

    在iOS中Qutarz2D 详解及使用 (一)初识 介绍 Quartz 2D是二维绘图引擎. 能完成的工作有: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成 ...

  2. 转载]IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本 )

    原文地址:IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本作者:佐佐木小次郎 因为最近项目上要用有关LBS的功能.于是我便做一下预研. 一般说来LBS功能一般分为两块:一块是地理 ...

  3. iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)

    前言:一个路径可以包含由一个或者多个shape以及子路径subpath,quartz提供了很多方便的shape可以直接调用.例如:point,line,Arc(圆弧),Curves(曲线),Ellip ...

  4. iOS开发:详解Objective-C runTime

    Objective-C总Runtime的那点事儿(一)消息机制 最近在找工作,Objective-C中的Runtime是经常被问到的一个问题,几乎是面试大公司必问的一个问题.当然还有一些其他问题也几乎 ...

  5. iOS应用开发详解

    <iOS应用开发详解> 基本信息 作者: 郭宏志    出版社:电子工业出版社 ISBN:9787121207075 上架时间:2013-6-28 出版日期:2013 年7月 开本:16开 ...

  6. 了解iOS消息推送一文就够:史上最全iOS Push技术详解

    本文作者:陈裕发, 腾讯系统测试工程师,由腾讯WeTest整理发表. 1.引言 开发iOS系统中的Push推送,通常有以下3种情况: 1)在线Push:比如QQ.微信等IM界面处于前台时,聊天消息和指 ...

  7. iOS开发者证书-详解

    iOS开发者证书-详解/生成/使用 本文假设你已经有一些基本的Xcode开发经验, 并注册了iOS开发者账号. 相关基础 加密算法 现代密码学中, 主要有两种加密算法: 对称密钥加密 和 公开密钥加密 ...

  8. iOS开发-Runtime详解

    iOS开发-Runtime详解 简介 Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的.比如: [recei ...

  9. winxp计算机管理中服务详解

    winxp计算机管理中服务详解01 http://blog.sina.com.cn/s/blog_60f923b50100efy9.html http://blog.sina.com.cn/s/blo ...

随机推荐

  1. 8-IO总结

    3. 4. 5.

  2. RFM

    前面博客中讲到的聚类,聚类是对客户的一些特征进行分群,属于描述,不涉及客户价值的判断,然而在营销中,其实第一步应该是搞清楚谁才是你的关键客户,哪些用户的价值较高,这就需要用到RFM模型.RFM模型是众 ...

  3. N-Queens leetcode

    The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens ...

  4. 12个Linux进程管理命令介绍

    导读 执行中的程序称作进程.当程序可以执行文件存放在存储中,并且运行的时候,每个进程会被动态得分配系统资源.内存.安全属性和与之相关的状态.可以有多个进程关联到同一个程序,并同时执行不会互相干扰.操作 ...

  5. Word撤销键(Ctrl+z)无效的解决方法

    最近翻译一本新书,Word2013用的较多,于是发现了一个奇怪的问题,撤销按钮一直是灰色.编辑的时候闪一下,又变为灰色.按Ctrl-Z也同样不管用.中文资源里面的解决方法都是用winword.exe ...

  6. inner join ,left join ,right join 以及java时间转换

    1.inner join ,left join 与 right join (from 百度知道) 例表aaid adate1    a12    a23    a3表bbid  bdate1     ...

  7. 补上题代码 hdu1520

    #include<iostream> #include<cmath> #include<algorithm> #include<vector> #inc ...

  8. 认识Visual Studio 条件编译

    一开始是在一些源代码中看到这些语法符号,了解到这就是" 条件编译"技术

  9. TIMIT语音库

    TIMIT语音库有着准确的音素标注,因此可以应用于语音分割性能评价,同时该数据库又含有几百个说话人语音,所以也是评价说话人识别常用的权威语音库,但该语音库的商业用途是要花钱买的.下面的资源来自与MIT ...

  10. Split Array Largest Sum

    Given an array which consists of non-negative integers and an integer m, you can split the array int ...