博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSUserDefaults简介及使用
阅读量:6494 次
发布时间:2019-06-24

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

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];,这样这个设置就存到默认参数中了。

来源:

本文转自夏雪冬日博客园博客,原文链接:http://www.cnblogs.com/heyonggang/p/3663424.html,如需转载请自行联系原作者

你可能感兴趣的文章
NPM 模块收集
查看>>
ReactNative 环境的搭建和启动(安卓版)
查看>>
DEX文件的签名和校验(翻译)
查看>>
Silverlight显示数据库二进制字段图片(RadTileView)
查看>>
斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)”
查看>>
《坦克世界》1.0+:使用 CPU 优化的图形和物理丰富用户体验
查看>>
【Udacity】解决:字幕遮挡视频内容怎么办?Udacity字幕大小调整
查看>>
POJ 1159, Palindrome
查看>>
Java并发之AQS详解
查看>>
锐捷网络笔试分享—应用软件开发
查看>>
HDFS架构剖析
查看>>
在IOS中使用json
查看>>
Orlion个人博客 | 全栈工程师之路-www.orlion.ga
查看>>
pyqt5学习3
查看>>
Chapter 9. 线程
查看>>
微信小程序获取复选框全选,反选选中的值
查看>>
vue-awesome-swiper 的 使用
查看>>
好看又实用的英文字体
查看>>
图片的响应式实现
查看>>
Linux学习笔记(二)-Shell教程
查看>>