NSUserDefaults API简单的介绍和使用英文文件
Overview
The
NSUserDefaults class provides a programmatic interface for interacting with the defaults system. The defaults system allows an application to customize its behavior to match a user’s preferences. For example, you can allow users to determine what units
of measurement your application displays or how often documents are automatically saved. Applications record such preferences by assigning values to a set of parameters in a user’s defaults database. The parameters are referred to as defaults since they’re
commonly used to determine an application’s default state at startup or the way it acts by default.
At runtime, you use anNSUserDefaults object to read the defaults that your application uses from a user’s defaults database.NSUserDefaults caches the
information to avoid having to open the user’s defaults database each time you need a default value. Thesynchronize method, which is automatically invoked at periodic intervals, keeps the in-memory cache in sync with a user’s defaults
database.
The
NSUserDefaults class provides convenience methods for accessing common types such as floats, doubles, integers, Booleans, and URLs. A default object must be a property list, that is, an instance of (or for collections a combination of instances of):NSData,NSString,
NSNumber, NSDate,
NSArray, orNSDictionary. If you want to store any other type of object, you should typically archive it to create an instance ofNSData. For more details, seePreferences
and Settings Programming Guide.
Values returned fromNSUserDefaults are immutable, even if you set a mutable object as the value. For example, if you set a mutable string as the value for"MyStringDefault",
the string you later retrieve using stringForKey: will be immutable.
A defaults database is created automatically for each user. TheNSUserDefaults class does not currently support per-host preferences. To do this, you must use the CFPreferences
API (seePreferences
Utilities Reference). However, NSUserDefaults correctly reads per-host preferences, so you can safely mix CFPreferences code withNSUserDefaults code.
If your application supports managed environments, you can use anNSUserDefaults object to determine which preferences are managed by an administrator for the benefit of the
user. Managed environments correspond to computer labs or classrooms where an administrator or teacher may want to configure the systems in a particular way. In these situations, the teacher can establish a set of default preferences and force those preferences
on users. If a preference is managed in this manner, applications should prevent users from editing that preference by disabling any appropriate controls.
The
NSUserDefaults class is thread-safe.
Tasks
Getting the Shared NSUserDefaults Instance
- + standardUserDefaults
- + resetStandardUserDefaults
Initializing an NSUserDefaults Object
- – init
- – initWithUser:Deprecated
in OS X v10.9
Registering Defaults
- – registerDefaults:
Getting Default Values
- – arrayForKey:
- – boolForKey:
- – dataForKey:
- – dictionaryForKey:
- – floatForKey:
- – integerForKey:
- – objectForKey:
- – stringArrayForKey:
- – stringForKey:
- – doubleForKey:
- – URLForKey:
Setting Default Values
- – setBool:forKey:
- – setFloat:forKey:
- – setInteger:forKey:
- – setObject:forKey:
- – setDouble:forKey:
- – setURL:forKey:
Removing Defaults
- – removeObjectForKey:
Maintaining Persistent Domains
- – synchronize
- – persistentDomainForName:
- – removePersistentDomainForName:
- – setPersistentDomain:forName:
- – persistentDomainNamesDeprecated
in OS X v10.9
Accessing Managed Environment Keys
- – objectIsForcedForKey:
- – objectIsForcedForKey:inDomain:
Managing the Search List
- – dictionaryRepresentation
Maintaining Volatile Domains
- – removeVolatileDomainForName:
- – setVolatileDomain:forName:
- – volatileDomainForName:
- – volatileDomainNames
Maintaining Suites
- – addSuiteNamed:
- – removeSuiteNamed:
翻译上面NSUserDefaults的API大概意思例如以下:
NSUserDefaults类提供了一个与默认系统进行交互的编程接口。NSUserDefaults对象是用来保存,恢复应用程序相关的偏好设置。配置数据等等。
默认系统同意应用程序自己定义它的行为去迎合用户的喜好。你能够在程序执行的时候从用户默认的数据库中读取程序的设置。同一时候NSUserDefaults的缓存避免了在每次读取数据时候都打开用户默认数据库的操作。能够通过调用synchronize方法来使内存中的缓存与用户默认系统进行同步。
假设你想存储其它类型的对象,你要将其归档并创建一个NSData来实现存储。
从NSUserDefaults返回的值是不可改变的。即便是你在存储的时候使用的是可变的值。比如你使用mutable string做为“MyStringDefault”的值。当你做使用stringForKey:方法获取的值。这个值仍然是不可变的。
NSUserDefaults是单例,同一时候也是线程安全的.
方法具体解释
获取公有的NSUserDefaults实例
- + (NSUserDefaults *)standardUserDefaults;
- 单例模式,获取NSUserDefaults的一个实例。默认Key值例如以下:
- AppleLanguages,
- AppleKeyboardsExpanded,
- AppleITunesStoreItemKinds,
- AppleLocale,
- AppleKeyboards,
- NSLanguages,
- NSInterfaceStyle
- + (void)resetStandardUserDefaults;
初始化一个NSUserDefaults的对象
- - (id)init;
- - (id)initWithUser:(NSString *)username;
- init是初始化一个公有的defaults对象
- initWithUser是初始化一个针对username的对象
注冊一个defaults
- - (void)registerDefaults:(NSDictionary *)registrationDictionary;
- 注冊的内容(registrationDictionary里的)不写入磁盘
获取Defaults的值
- - (NSArray *)arrayForKey:(NSString *)defaultName;
- - (BOOL)boolForKey:(NSString *)defaultName;
- 返回一个和defaultName关联的bool值,假设不存在defaultName的话返回NO
- - (NSData *)dataForKey:(NSString *)defaultName
- 返回defaultName所相应的NSData数据,假设defaultName不存在或者返回的数据不是NSData类型的都会返回nil
- 返回的数据是不可变类型的
- - (NSDictionary *)dictionaryForKey:(NSString *)defaultName
- 同dataForKey
- - (float)floatForKey:(NSString *)defaultName
- 同dataForKey
- 假设defaultName不存在返回0
- - (NSInteger)integerForKey:(NSString *)defaultName
- 同floatForKey
- 假设defaultName不存在返回0
- - (id)objectForKey:(NSString *)defaultName
- 同dataForKey
- - (NSArray *)stringArrayForKey:(NSString *)defaultName
- 同dataForKey
- 假设defaultName不存在,或者defaultName所相应的不是一个数组,或者数组包括的不是NSString对象都会返回nil
- - (NSString *)stringForKey:(NSString *)defaultName
- 同dataForKey
- - (double)doubleForKey:(NSString *)defaultName
- 同floatForKey
- - (NSURL *)URLForKey:(NSString *)defaultName
- 同dataForKey
- 当调用[NSUserDefaults URLForKey:]时。有下面3种情况:
- 1.假设值是NSData,NSData能够作为[NSKeyedUnarchiver unarchiveObjectWithData:]的參数。假设NSData能够作为NSURL存档就返回一个NSURL。否则返回nil
- 2.假设值是一个文件引用的URL,那么这个文件引用的URL将会被创建,可是它的书签数据不会被解决直到以后使用NSURL实例
- 3.假设值是一个一~开头的字符串,这个字符串将会用[NSString stringByExpandingTildeInPath]扩展,文件将会以NSURL创建
设置Defaults值
- – setBool:forKey:
- – setFloat:forKey:
- – setInteger:forKey:
- – setDouble:forKey:
- – setObject:forKey:
- 对象參数仅仅能是属性列表对象:NSData,NSString,NSNumber,NSDate,NSArray,NSDictionary
- – setURL:forKey:
移除Defaults值
- - (void)removeObjectForKey:(NSString *)defaultName
维护持久域
- - (BOOL)synchronize
- 把持久域中的不论什么改变写到磁盘而且更新磁盘上的不论什么没有改动的持久域
- 假设返回YES表明成功保存到磁盘,相反返回NO
- 这种方法是以一定周期间隔自己主动调用的,假设你不想等待自己主动调用就能够调用这种方法来同步。
(比如。假设你的应用要退出时,或者你想更新磁盘上的defaults即使你没有做不论什么改变)
- - (NSDictionary *)persistentDomainForName:(NSString *)domainName
- 返回一个特定持久域的键值对
- - (NSArray *)persistentDomainNames
- 返回当前的持久域的名称
- - (void)removePersistentDomainForName:(NSString *)domainName
- 移除相应domainName的持久域
- - (void)setPersistentDomain:(NSDictionary *)domain forName:(NSString *)domainName
- 设置持久域
- domainName
- This value should be equal to your application's bundle identifier.
訪问管理的环境值
- - (BOOL)objectIsForcedForKey:(NSString *)key
- - (BOOL)objectIsForcedForKey:(NSString *)key inDomain:(NSString *)domain
管理搜索列表
- - (NSDictionary *)dictionaryRepresentation
- 返回搜索列表中相应域的全部的键值对
维护不稳定的域
- – removeVolatileDomainForName:
- – setVolatileDomain:forName:
- – volatileDomainForName:
- – volatileDomainNames
维护套件
- - (void)addSuiteNamed:(NSString *)suiteName
- 一个套件能够在不同的应用之间使用
- - (void)removeSuiteNamed:(NSString *)suiteName
- 移除套件
演示样例代码例如以下:
#pragma mark---------存
//创建 NSUserDefaults 单例
NSUserDefaults * ud = [NSUserDefaults standardUserDefaults];
//把_userNameTextField.text存到 NSUserDefaults 中
[ud setObject:_userNameTextField.text forKey:@"myKey"];
[ud synchronize];
#pragma mark---------取
//从 NSUserDefaults 中取出 数据
NSString * value = [ud objectForKey:@"myKey"];
NSLog(@"value = %@",value);
版权声明:本文博主原创文章,博客,未经同意不得转载。
NSUserDefaults API简单的介绍和使用英文文件的更多相关文章
- webservice和wcf和web.api简单介绍
转自:无废话的wcf等等 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下,你有很多的选择来构建一个HTTP Ser ...
- Tesseract OCR简单实用介绍
做字符识别,不能不了解google的Tesseract-OCR,但是如何在自己的工程中使用其API倒是语焉不详,官网上倒是很详尽地也很啰嗦地介绍如何重新编译生成适合自己平台的lib和dll,经过近些天 ...
- ASP.NET Web API 路由对象介绍
ASP.NET Web API 路由对象介绍 前言 在ASP.NET.ASP.NET MVC和ASP.NET Web API这些框架中都会发现有路由的身影,它们的原理都差不多,只不过在不同的环境下作了 ...
- vue学习笔记(二)——简单的介绍以及安装
学习编程需要的是 API+不断地练习^_^ Vue官网:https://cn.vuejs.org/ 菜鸟教程:http://www.runoob.com/vue2/vue-tutorial.html ...
- salesforce零基础学习(八十五)streaming api 简单使用(接近实时获取你需要跟踪的数据的更新消息状态)
Streaming API参考链接: https://trailhead.salesforce.com/en/modules/api_basics/units/api_basics_streaming ...
- GIT 分布式版本控制系统的简单使用介绍
GIT 分布式版本控制系统的简单使用介绍 1.GIT的概念Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 与 SVN 区别:1. GIT不仅仅是个版本控制系统,它 ...
- 我的Android进阶之旅】GitHub 上排名前 100 的 Android 开源库进行简单的介绍
GitHub Android Libraries Top 100 简介 本文转载于:https://github.com/Freelander/Android_Data/blob/master/And ...
- 常用函数式接口与Stream API简单讲解
常用函数式接口与Stream API简单讲解 Stream简直不要太好使啊!!! 常用函数式接口 Supplier<T>,主要方法:T get(),这是一个生产者,可以提供一个T对象. C ...
- 微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍
微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍 一.为什么会有 API Gateway 网关 随着微服务架构的流行,很多公司把原有的单 ...
随机推荐
- linux--档案权限与目录配置
下面是最近学习档案权限与目录配置的一些知识点总结***博客园-邦邦酱好*** Linux最优秀的地方之一,就在于他的多人多任务环境.而为了让各个使用者具有较保密的档案数据,因此档案的权限管理就变的很重 ...
- httpcomponents-client-4.3.x DOC
Chapter 1. Fundamentals Prev Next Chapter 1. Fundamentals 1.1. Request execution The most essent ...
- 就这样CSDN账号被人盗了??
和往常一样,来到公司后的第一件事情就是看看自己博客.没想到今天一看,小伙伴惊呆了. 莫名其妙地多了这个多不是神马的博文,还好几篇. 这说明CSDN账号也不怎么安全哦,以后小伙伴们要注意了.
- HTTP真的很简单(转)
原文:HTTP Made Really Easy因为我本身网络基础就很差,所以看到这篇文章一方面是学习网络知识,另一方面为了锻炼我蹩脚的英语水平,文中如有错误,欢迎浏览指正! 前言 在看这篇文章的时候 ...
- bnu1066
hnu1066 给我们一张图,问我们摧毁边使得s和t不连通有多少种方案, 方案与方案之间不能存在相同的摧毁目标. 这是一个神奇的题目. 这题可以转为求s与t的最短路,为什么呢? 因为方案与方案之间不能 ...
- contextmenu
void Loaded(object sender, RoutedEventArgs e) { ContextMenu contextMenu = new ContextMenu(); context ...
- leetCode Min Stack解决共享
原标题:https://oj.leetcode.com/problems/min-stack/ Design a stack that supports push, pop, top, and ret ...
- 记一个Oracle存储过程错误
下面一个存储过程是创建一个job,在5秒后更新一个表: create or replace PROCEDURE P_TEST AS jobno number; BEGIN dbms_job.submi ...
- 挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面)
原文:挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面) 挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面) 这个工具主要就是自 ...
- 移植kl档,但调用默认Generic.kl解决的方法
从飞机到现在移植模型来开发遥控器按键,调查发现,大部分的功能键始终没有任何效果. 跑 dumpsys input 要查看当前的关键kl, 查找KeyLayoutFile它原来是默认Generic.kl ...