NSUserDefaults简介及使用

转载 2016年08月29日 22:54:42


NSUserDefaults类提供了一个与默认系统进行交互的编程接口。NSUserDefaults对象是用来保存,恢复应用程序相关的偏好设置,配置数据等等。默认系统允许应用程序自定义它的行为去迎合用户的喜好。你可以在程序运行的时候从用户默认的数据库中读取程序的设置。同时NSUserDefaults的缓存避免了在每次读取数据时候都打开用户默认数据库的操作。可以通过调用synchronize方法来使内存中的缓存与用户默认系统进行同步。

NSUserDefaults类提供了非常方便的方法来获取常用的类型,例如 floats,doubles,intergers,Booleans,URLs。所以一个NSUserDefaults的对象必须是属性表,这也就是说 我们可以存储NSData,NSString,NSNUmber,NSDate,NSArray,NSDictionary这些实例。如果你想存储其他类 型的对象,你要将其归档并创建一个NSData来实现存储。

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

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

在使用NSUserDefaults的时候,先看下下面的代码:

NSDictionary* defaults = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];
 
NSLog(@"Defaults: %@", defaults);

 是用来获取设备上的所有的NSUserDefaults的设置。

上面代码输出了

Defaults: {
  AppleITunesStoreItemKinds =     (
     eBook,
 
      document,
 
      "software-update",
 
      booklet,
 
      "itunes-u",
 
      newsstand,
 
      artist,
 
      podcast,
 
      "podcast-episode",
 
      software
 
  );
 
  AppleKeyboards =     (
 
      "zh_Hans-Pinyin@sw=Pinyin;hw=US",
 
      "en_US@hw=US;sw=QWERTY"
 
  );
 
  AppleKeyboardsExpanded = 1;
 
  AppleLanguages =     (
 
      "zh-Hans",
 
      en,
 
      fr,
 
      de,
 
      ja,
 
      nl,
 
      it,
 
      es,
 
      pt,
 
      "pt-PT",
 
      da,
 
      fi,
 
      nb,
 
      sv,
 
      ko,
 
      "zh-Hant",
 
      ru,
 
      pl,
 
      tr,
 
      uk,
 
      ar,
 
      hr,
 
      cs,
 
      el,
 
      he,
 
      ro,
 
      sk,
 
      th,
 
      id,
 
      "en-GB",
 
      ca,
 
      hu,
 
      vi
 
  );

 如果想单独看某个key的设置,例如:

NSArray *array = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleKeyboards"];
 
NSLog(@"Keyboards: %@", array);

 会输出

AppleKeyboards =     (
      "zh_Hans-Pinyin@sw=Pinyin;hw=US",
      "en_US@hw=US;sw=QWERTY"
  );

 在看下面的代码

if([[NSUserDefaults standardUserDefaults] objectForKey:@"message"]==nil){
 
[[NSUserDefaults standardUserDefaults] setObject:@"This_is_my_default_message" forKey:@"message"];
 
}
  

代码意思是判断NSUserDefaults的“message”key 在dictionaryRepresentation中是否存在,如果不存在就

设置“message”keyThis_is_my_default_message

在加上句[[NSUserDefaults standardUserDefaults] synchronize];,这样这个设置就存到默认参数中了。

NSUserDefaults类的使用—— 专门用于保存用户偏好设置或用户Model

介绍:NSUserDefaults适合存储轻量级的本地数据,一些简单的数据(NSString类型的)例如密码,网址等。如果要使用NSUserDefaults存储自定义的对象还需要进行特定的处理。 一、...
  • u013087513
  • u013087513
  • 2015年09月27日 22:09
  • 1381

NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象

iOS下可以使用NSUserDefaults、sqlite、CoreData几种常用的方式来存储数据,其中NSUserDefaults用来存储类似用户的配置等这些的数据,后两者用户存储大批量和比较复杂...
  • LVXIANGAN
  • LVXIANGAN
  • 2015年09月19日 13:46
  • 3531

NSUserDefaults简介及使用

NSUserDefaults简介及使用
  • qq_28656559
  • qq_28656559
  • 2015年11月07日 14:45
  • 100

NSUserDefaults数据存储总结

NSUserDefaults用法详解 1.NSUserDefaults是一个单例类,可以用于数据的永久保存, 一般用于保存应用程序设置以及用户数据等轻量级数据, 而且简单实用。 2.NSU...
  • st646889325
  • st646889325
  • 2016年12月07日 09:10
  • 377

NSUserDefaults简介及使用

NSUserDefaults类提供了一个与默认系统进行交互的编程接口。NSUserDefaults对象是用来保存,恢复应用程序相关的偏好设置,配置数据等等。默认系统允许应用程序自定义它的行为去迎合用户...
  • Black_House
  • Black_House
  • 2014年12月11日 15:39
  • 252

IOS 中NSUserDefaults的用法(轻量级本地数据存储)

NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名、密码之类的,个人觉得使用NSUserDefaults是首选。下次再登陆的时候就可以直接从NSUserDefa...
  • yuqingzhude
  • yuqingzhude
  • 2015年09月15日 11:22
  • 513

NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象

摘要: NSUserDefaults适合存储轻量级的本地数据,一些简单的数据(NSString类型的)例如密码,网址等,NSUserDefaults肯定是首选,但是如果我们自定义了一个对象,对象保存的...
  • u012960049
  • u012960049
  • 2017年02月10日 14:05
  • 126

NSUserDefaults简介及使用

NSUserDefaults NSUserDefaults类提供了一个与默认系统进行交互的编程接口。NSUserDefaults对象是用来保存,恢复应用程序相关的偏好设置,配置数据等等。默认系统允许...
  • wanna_love
  • wanna_love
  • 2014年05月05日 20:00
  • 546

NSUserDefaults 简介,以及使用方法使用

NSUserDefaults适合存储轻量级的本地数据,一些简单的数据(NSString类型的)例如密码,网址等,NSUserDefaults肯定是首选,但是如果我们自定义了一个对象,对象保存的是一些信...
  • ID314846818
  • ID314846818
  • 2015年08月01日 11:38
  • 240

NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象

NSUserDefaults适合存储轻量级的本地数据。 一些简单的数据(NSString类型的)例如密码,网址等,NSUserDefaults肯定是首选,但是如果我们自定义了一个对象,对象保存的是一...
  • pilqc2009
  • pilqc2009
  • 2015年07月23日 17:31
  • 135
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NSUserDefaults简介及使用
举报原因:
原因补充:

(最多只允许输入30个字)