文档章节

用户首选项NSUserDefaults

Orange1
 Orange1
发布于 2012/10/25 10:16
字数 899
阅读 1222
收藏 5

用户首选项是用来保存和记录用户在操作应用的过程做做出的一些选择或设置。类似Android开发中的SharedPreference,可以存储一些数据,但基本都是简单类型的数据,主要作用都是存储一些用户设置数据,比如是否是首次登陆,就可以设置一个布尔类型的变量,设值为true或false。


NSUserDefaults的几个重要方法:

standardUserDefaults:创建共享默认设置对象的类方法(Java中的静态方法,单例)

objectForKey:返回键对象的实例方法

setObject: forKey:以指定的键设置值的实例方法


基本用法:

新建一个工程,然后在ViewController.m中添加如下代码

- (void)viewDidLoad

{

    [superviewDidLoad];

   NSUserDefaults *myDefaults = [NSUserDefaultsstandardUserDefaults];

    [myDefaultssetObject:@"Hello"forKey:@"defaultKey"];

    

   NSLog(@"The value is %@",[myDefaultsobjectForKey:@"defaultKey"]);

}


编译运行结果如下:

NSUserDefaultsTest[3007:f803] The value is Hello


这样我们实现了NSUserDefaults的基本使用,NSUserDefaults有一个基本特点就是,数据是保存在程序全局中的,所以当退出程序后下次再进来时,数据还是存在的,这样就起到了保存用户操作数据的功能。


上面是实现了个人首选项的使用,下面我们再来看看系统设置的使用。

首先来熟悉一下bundle

bundle的意思是应用程序束的意思,在IOS开发中,存在三种类型的bundle,分别是框架bundle、应用程序bundle和设置bundle。另外还有一种解释就是Xcode让您能够将多个文件组合成有机的整体,这就叫bundle。实际上,bundle就是一个目录,或者叫包。bundle的有点在于它能不露痕迹的存储文件的多个版本,并在特定的条件下使用正确的版本。我们平常接触比较多的就是应用程序bundle,当编译运行程序在iphone或ipad上时,就创建了应用程序bundle。


首先新建一个文件,新建时选择Resources,然后选择settings.bundle,这样就建立了一个设置首选项的默认形式,运行后到模拟器的设置中可以看到如下界面:



打开Settings.bundle文件



可以看到有个Root.plist文件,里面存储的内容都是以键值对的形式存储的。这里的Item就对应了设置界面中显示的一些选项,Item0的类型是Group,对应的是一个分组表格类型,然后下面的Item都在这个分组表格中,直到遇到下一个Group。Text Field是输入文本框,下面的identifier是key,在代码中可以通过NSUserDefaults的objectForKey:来访问这个key对应的value。显示类型可供选择的还有开关、滑动条、子设置项等。使用中可以具体查看。


这是我做的另一个Demo,里面包含了更多可显示的类型



然后回到ViewController.m文件中,在viewDidLoad中添加如下代码:

//程序设置首选项

    self.nameLabel.text = [[NSUserDefaultsstandardUserDefaults] stringForKey:@"name_preference"];

    

    BOOL isSwitch = [[NSUserDefaultsstandardUserDefaults] boolForKey:@"enabled_preference"];

   //输出BOOL值的方式

    self.switchLabel.text = [NSStringstringWithFormat:@"%@",isSwitch ?@"YES":@"NO"];

    

    float sliderValue = [[NSUserDefaultsstandardUserDefaults] floatForKey:@"slider_preference"];

    self.sliderLabel.text = [NSStringstringWithFormat:@"%f",sliderValue];


这样就把设置中的信息读出来显示到界面上了:



以上就是两种用户首选项的使用方法,一种是自定义首选项,一种是使用系统设置的方式。两种都很方便,在项目中用到的地方也比较多。


以上还有不足的地方,希望大家补充,希望和我交流的同学可以关注我的新浪微博:唐韧_Ryan

本文转载自:http://blog.csdn.net/tangren03/article/details/7768785

Orange1
粉丝 9
博文 39
码字总数 21934
作品 0
苏州
程序员
私信 提问
加载中

评论(1)

AmuMark
AmuMark
讲解的非常到位 涨知识了13
XamarinEssentials教程清空键值

XamarinEssentials教程清空键值 Preferences类的Clear()方法可以清空所有的键和值。该方法有两种形式,下面依次进行介绍。 (1)Clear()方法的语法形式如下: public static void Clear() (...

大学霸
2018/11/05
6
0
NSUserDefaults

NSUserDefaults NSUserDefaults类提供了一个与默认系统进行交互的编程接口。NSUserDefaults对象是用来保存,恢复应用程序相关的偏好 设置,配置数据等等。默认系统允许应用程序自定义它的行为...

jackyyang
2012/07/25
530
0
NSUserDefaults的使用

NSUserDefaults的使用 2011-07-12 15:21:55| 分类: iphonedev_note|举报|字号 订阅 用户轻量级的数据持久化,主要用于保存用户程序的配置等信息,以便下次启动程序后能恢复上次的设置。 该数...

HillYoung
2014/02/11
1K
0
iOS数据持久化之使用NSUserDefaults存储数据

iOS数据持久化之使用NSUserDefaults存储数据 作者: 发布日期:2014-09-26 21:04:37 Tag标签:数据 1.用处:NSUserDefaults用来存储类似用户的配置、程序设置信息等这些的数据 iOS下可以使用...

Bob_Zheng
2015/11/25
22
0
NSUserDefaults的使用

NSUserDefaults的使用 2011-07-12 15:21:55| 分类: iphonedev_note|举报|字号 订阅 用户轻量级的数据持久化,主要用于保存用户程序的配置等信息,以便下次启动程序后能恢复上次的设置。 该数...

常思过
2014/02/15
170
0

没有更多内容

加载失败,请刷新页面

加载更多

How to find table in a database with HeidiSQL

In this article I want to show you how you can find table by name with HeidiSQL. Find table by typing One of the options to find table is to having focus in the object explorer ......

Ciet
8分钟前
4
0
基于SWIG跨平台开发的C++编码规范

1、数组定义 使用数组不建议采用指针方式eg double *,或者 double test[4] 直接采用std::vector或list即可。对于固定长度的数组定义为一个结构体 double test[4]instead ofstruct Vec...

洋碱
10分钟前
2
0
用Markdown编程之布局

基本就是用Markdown的布局方式。 \:是转义符号,最高优先级。 行首+# :用于空间布局,1-6分别标明:模式根、子模式、子模式内。 行首+> :用于标注和通信,1个标明标注,2个标明分类,3个标...

dwcz
17分钟前
3
0
SpringBoot定时器多线程解决方案

@Scheduled 作用:spring定时器(定时执行一次或定时轮询执行一段代码) 使用场景:注解在方法上 参数说明:常用参数 @Scheduled 参数说明 String cron:cron表达式定义了方法执行的时间规则(网...

whoisliang
17分钟前
4
0
3.01、Spring AOP的理解

注:转 https://mp.weixin.qq.com/s/PsgTLn8cdTxdd542XgVkUA 什么是AOP AOP(Aspect-Oriented Programming), 即 面向切面编程 , 它与 OOP( Object-Oriented Programming, 面向对象编程) 相辅相......

追忆2025
23分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部