用户首选项是用来保存和记录用户在操作应用的过程做做出的一些选择或设置。类似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
分享到:
相关推荐
Swift中的`NSUserDefaults`是苹果iOS、macOS等操作系统中用于存储轻量级用户偏好设置的主要方式。它提供了一个简单易用的接口,让开发者能够快速读取和写入用户的个性化设置,而无需复杂的数据库操作。在本文中,...
在iOS学习的过程中,笔记是积累知识、巩固理解的重要工具。"IOS学习笔记补充1"是对前期学习内容的进一步丰富和完善,旨在帮助开发者更好地理解和掌握iOS开发的关键知识点。这份笔记不仅适用于初学者,对于有一定经验...
在iOS应用开发中,`NSUserDefaults` 是一个至关重要的组件,它允许开发者存储用户偏好设置或者轻量级的数据。这个压缩包"IOS应用源码——NSUserdefaults(读取和写入自定义对象).zip"包含了一个示例项目,展示了...
NSUserDefaults,又称用户默认设置,是iOS中用于存储用户偏好设置和轻量级数据的类。它是一个全局的单例对象,可以方便快捷地读取和写入用户配置信息。相比于其他数据持久化方式(如Core Data、SQLite),...
在iOS开发中,`NSUserDefaults` 是一个至关重要的组件,它允许开发者存储用户偏好设置和轻量级数据。这个源码Demo主要展示了如何使用`NSUserDefaults`来读取和写入自定义对象,这对于理解和实践iOS应用的本地数据...
在iOS开发中,`NSUserDefaults` 是一个非常常用的数据持久化工具,它主要用于存储用户的一些偏好设置或者轻量级的数据。当需要在应用的不同会话之间持久化数据,比如用户的登录状态、账号或密码等信息时,`...
NSUserDefaults是iOS开发中一个非常重要的类,用于存储用户的基本偏好设置和轻量级的数据。它提供了简单的方法来读取和写入数据,这些数据在应用的生命周期内保持持久化,并在用户下次打开应用时仍然可用。这个教程...
在iOS应用开发中,`NSUserDefaults` 是一个非常重要的组件,它用于存储用户偏好设置或者轻量级的数据。本源码示例主要讲解如何利用`NSUserDefaults`在iOS应用中进行自定义对象的读取与写入操作。下面将详细阐述`...
通过学习和理解`NSUserDefaults`的工作原理和使用方法,初学者可以快速地为iOS应用添加基本的用户偏好设置功能。在实际项目中,合理利用`NSUserDefaults`可以提高用户体验,让应用更加智能化。在`Classes`目录下,...
对于iOS。 计算发射次数。 使用 NSUserDefaults。 用法 如何使用 您可以在任何想要计算启动计数的地方调用它。 [TMKLaunchCountManager launch]; 你能做什么? 您已启动的先前版本。 NSLog(@"%@", [...
使用系统的NSUserDefaults进行存取值实在是难以对其进行统一管理,为此NSUserDefaultsModel就很好的解决了这一难题,并且还支持Cocoapods。 github地址:https://github.com/liuchongfaye/NSUserDefaultsModel ...
NSUserDefaults是iOS平台上的一种轻量级的数据持久化方法,主要用于存储用户偏好设置或者应用程序的状态数据。在Objective-C中,它是苹果提供的Foundation框架的一部分,为开发者提供了一种简单的方式来读写小型数据...
PAPreferences, 使用 @dynamic 访问 NSUserDefaults PAPreferences使用NSUserDefaults存储用户首选项的简便方法。PAPreferences将 dynamic 属性映射到 NSUserDefaults getter和 setter,以便访问默认值,就像它们是...
在iOS应用开发中,侧边栏(Sidebar)通常被用作主内容区域的导航辅助,为用户提供一个可扩展的菜单,展示多个功能模块或者层级结构。这个Demo是针对iOS 7设计的,意味着它可能使用了当时最新的Apple UI设计指南和...
NSUserDefaults通常用于保存那些不需要频繁写入磁盘且数据量较小的信息,如用户首选项、游戏进度或应用程序的一些状态。它不适用于大量数据的持久化,因为它的设计目标是快速读取和写入小量数据。在iOS和macOS应用中...
通过学习和理解这个示例项目,开发者能够掌握如何在iOS应用中使用`NSUserDefaults`来实现记住密码功能,从而提升用户体验。这是一项基础但实用的技能,对于任何涉及用户登录的iOS应用开发都是必要的。
在iOS应用开发中,"类似js的radio选项"通常指的是实现单选按钮(Radio Button)功能,这是一种常见的用户界面元素,允许用户在多个选项中选择一个。JavaScript中的radio按钮经常用于网页开发,而在iOS应用中,我们...
iOS中有五种持久化数据的方式:属性列表、对象归档、NSUserDefaults、SQLite3和Core Data NSUserDefaults官方文档介绍: NSUserDefaults类为和默认系统类交互提供了一种编程接口。默认系统允许应用程序去定制其行为...
### iOS学习文档知识点详解 #### 一、在APP中创建一个全屏内置浏览器 ##### 1. 创建一个新APP项目 - **步骤说明**:在Xcode中创建一个新的iOS项目时,选择“Application”类别下的“View-based Application”。...