iOS用户首选项NSUserDefaults浅析

      NSUserDefaults称为用户首选项,是一个轻量级的数据存储机制。关于如何使用,请参考《iOS项目开发实战——使用用户首选项数据API存储信息》《iOS项目开发实战——使用用户首选项数据进行启动提示》这两篇博客。这里我们要来分析一下NSUserDefaults的其他特性。

      首先NSUserDefaults是单例类,是单例模式的一个实例。在iOS中,单例模式很常见,它用于确保特定类只有一个实例。单例最常用于表示硬件或者操作系统向应用程序提供的服务。

      NSUserDefaults类提供了一个默认的系统编程接口进行交互,可以说是最简单的存储方式之一。一般用来存储应用程序相关的偏好设置,配置数据等,以便下次启动程序之后能恢复上次的设置。而且他可以在程序的任何地方存储和读取数据,在运行时,可以使用NSUserDefaults对象读取应用程序的默认数据库来获取数据。NSUSerDefaults具有缓存机制,所以不必在每次读取数据的时候都打开应用程序的默认设置数据库。可以通过synchronize方法来使内存中的缓存与系统默认数据库进行同步。

      当然NSUserDefaults也有自己的局限性,他一般用于存储单条数据,比如程序设置信息,而大量的条目数据一般使用数据库,大文件的数据使用文件存储方式。

      对象归档(NSKeyedArchiver)是将内存中的对象实例保存成磁盘并且可以逆向这个过程以保存用户的状态。用处很大,但是比较麻烦,需要在程序设计的时候就把每个类实现NSCoding协议的功能。


      现在我们来看看NSUserDefaults支持哪些类型,NSNumber(NSInteger,float,double),NSString,NSDate,NSArray,NSDictionary,BOOL.  NSUserDedaults也是用键值对的形式进行存储的,如果大家了解过KVC的话,其实也可以理解NSUserDefaults也是属于KVC的一种。

       那么现在问题来了,这个存储的数据到底放在哪里了呢?数据存储在了该应用程序的沙盒中。首先看一下博客《iOS应用沙盒机制浅析》,关于什么是应用程序沙盒和获取沙盒位置,我在博客中有详细介绍。NSUserDefaults的数据就存储在沙盒目录下的  Library/Preferences 文件夹下的plist文件。而且如果你现在正在进行开发调试的话,你还可以手动修改这个plist文件,里面存储的数据和你通过代码写入的是一模一样的。


github主页:https://github.com/chenyufeng1991  。欢迎大家访问!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值