NSUserDefaults API简单的介绍和使用英文文件

NSUserDefaults API简单的介绍和使用英文文件

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

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

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方法来使内存中的缓存与用户默认系统进行同步。


NSUserDefaults类提供了很方便的方法来获取经常使用的类型,比如floats,doubles,intergers,Booleans,URLs。所以一个NSUserDefaults的对象必须是属性表,这也就是说我们能够存储NSData,NSString,NSNUmber,NSDate,NSArray,NSDictionary这些实例。

假设你想存储其它类型的对象,你要将其归档并创建一个NSData来实现存储。

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

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


方法具体解释

获取公有的NSUserDefaults实例

[plain] 
view plain
copy

  1. + (NSUserDefaults *)standardUserDefaults;  
  2. 单例模式,获取NSUserDefaults的一个实例。默认Key值例如以下:  
  3. AppleLanguages,  
  4. AppleKeyboardsExpanded,  
  5. AppleITunesStoreItemKinds,  
  6. AppleLocale,  
  7. AppleKeyboards,  
  8. NSLanguages,  
  9. NSInterfaceStyle  

[plain] 
view plain
copy

  1. + (void)resetStandardUserDefaults;  

初始化一个NSUserDefaults的对象

[plain] 
view plain
copy

  1. – (id)init;  
  2. – (id)initWithUser:(NSString *)username;  
  3. init是初始化一个公有的defaults对象  
  4. initWithUser是初始化一个针对username的对象  

注冊一个defaults

[plain] 
view plain
copy

  1. – (void)registerDefaults:(NSDictionary *)registrationDictionary;  
  2. 注冊的内容(registrationDictionary里的)不写入磁盘  

获取Defaults的值

[plain] 
view plain
copy

  1. – (NSArray *)arrayForKey:(NSString *)defaultName;  

[plain] 
view plain
copy

  1. – (BOOL)boolForKey:(NSString *)defaultName;  
  2. 返回一个和defaultName关联的bool值,假设不存在defaultName的话返回NO  
[plain] 
view plain
copy

  1. – (NSData *)dataForKey:(NSString *)defaultName  
  2. 返回defaultName所相应的NSData数据,假设defaultName不存在或者返回的数据不是NSData类型的都会返回nil  
  3. 返回的数据是不可变类型的  
[plain] 
view plain
copy

  1. – (NSDictionary *)dictionaryForKey:(NSString *)defaultName  
  2. 同dataForKey  
[plain] 
view plain
copy

  1. – (float)floatForKey:(NSString *)defaultName  
  2. 同dataForKey  
  3. 假设defaultName不存在返回0  
[plain] 
view plain
copy

  1. – (NSInteger)integerForKey:(NSString *)defaultName  
  2. 同floatForKey  
  3. 假设defaultName不存在返回0  
[plain] 
view plain
copy

  1. – (id)objectForKey:(NSString *)defaultName  
  2. 同dataForKey  
[plain] 
view plain
copy

  1. – (NSArray *)stringArrayForKey:(NSString *)defaultName  
  2. 同dataForKey  
  3. 假设defaultName不存在,或者defaultName所相应的不是一个数组,或者数组包括的不是NSString对象都会返回nil  
[plain] 
view plain
copy

  1. – (NSString *)stringForKey:(NSString *)defaultName  
  2. 同dataForKey  
[plain] 
view plain
copy

  1. – (double)doubleForKey:(NSString *)defaultName  
  2. 同floatForKey  
[plain] 
view plain
copy

  1. – (NSURL *)URLForKey:(NSString *)defaultName  
  2. 同dataForKey  
  3. 当调用[NSUserDefaults URLForKey:]时。有下面3种情况:  
  4. 1.假设值是NSData,NSData能够作为[NSKeyedUnarchiver unarchiveObjectWithData:]的參数。假设NSData能够作为NSURL存档就返回一个NSURL。否则返回nil  
  5. 2.假设值是一个文件引用的URL,那么这个文件引用的URL将会被创建,可是它的书签数据不会被解决直到以后使用NSURL实例  
  6. 3.假设值是一个一~开头的字符串,这个字符串将会用[NSString stringByExpandingTildeInPath]扩展,文件将会以NSURL创建  

设置Defaults值

[plain] 
view plain
copy

  1. – setBool:forKey:  
  2. – setFloat:forKey:  
  3. – setInteger:forKey:  
  4. – setDouble:forKey:  
  5.   
  6. – setObject:forKey:  
  7. 对象參数仅仅能是属性列表对象:NSData,NSString,NSNumber,NSDate,NSArray,NSDictionary  
  8. – setURL:forKey:  

移除Defaults值

[plain] 
view plain
copy

  1. – (void)removeObjectForKey:(NSString *)defaultName  

维护持久域

[plain] 
view plain
copy

  1. – (BOOL)synchronize  
  2. 把持久域中的不论什么改变写到磁盘而且更新磁盘上的不论什么没有改动的持久域  
  3. 假设返回YES表明成功保存到磁盘,相反返回NO  
  4. 这种方法是以一定周期间隔自己主动调用的,假设你不想等待自己主动调用就能够调用这种方法来同步。

    (比如。假设你的应用要退出时,或者你想更新磁盘上的defaults即使你没有做不论什么改变)  

[plain] 
view plain
copy

  1. – (NSDictionary *)persistentDomainForName:(NSString *)domainName  
  2. 返回一个特定持久域的键值对  
[plain] 
view plain
copy

  1. – (NSArray *)persistentDomainNames  
  2. 返回当前的持久域的名称  
[plain] 
view plain
copy

  1. – (void)removePersistentDomainForName:(NSString *)domainName  
  2. 移除相应domainName的持久域  
[plain] 
view plain
copy

  1. – (void)setPersistentDomain:(NSDictionary *)domain forName:(NSString *)domainName  
  2. 设置持久域  
  3. domainName  
  4. This value should be equal to your application’s bundle identifier.  

訪问管理的环境值

[plain] 
view plain
copy

  1. – (BOOL)objectIsForcedForKey:(NSString *)key  
  2. – (BOOL)objectIsForcedForKey:(NSString *)key inDomain:(NSString *)domain  

管理搜索列表

[plain] 
view plain
copy

  1. – (NSDictionary *)dictionaryRepresentation  
  2. 返回搜索列表中相应域的全部的键值对  

维护不稳定的域

[plain] 
view plain
copy

  1. – removeVolatileDomainForName:  
  2. – setVolatileDomain:forName:  
  3. – volatileDomainForName:  
  4. – volatileDomainNames  

维护套件

[plain] 
view plain
copy

  1. – (void)addSuiteNamed:(NSString *)suiteName  
  2. 一个套件能够在不同的应用之间使用  
[plain] 
view plain
copy

  1. – (void)removeSuiteNamed:(NSString *)suiteName  
  2. 移除套件  


演示样例代码例如以下:

#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);


版权声明:本文博主原创文章,博客,未经同意不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117104.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea 2022.01.13激活码【中文破解版】2022.02.20

    (idea 2022.01.13激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlHCIQ56F36O-eyJsaWN…

    2022年4月1日
  • MTK Keypad驱动框架[通俗易懂]

    MTK Keypad驱动框架[通俗易懂]上一节,看完了http://blog.csdn.net/morixinguan/article/details/7717020,tpd驱动框架的实现。那么这一节来分析下Keypad驱动框架的实现,其实大同小异,套路也是类似的,我们来看看:

    2022年5月8日
  • java判断闰年的方法_Java判断闰年的2种方法示例|chu「建议收藏」

    java判断闰年的方法_Java判断闰年的2种方法示例|chu「建议收藏」前言:给定一个年份,判断这一年是不是闰年。当以下情况之一满足时,这一年是闰年:1.年份是4的倍数而不是100的倍数;2.年份是400的倍数。其他的年份都不是闰年。方法一:publicclassBissextile{booleanbissextile(intyear){//创建boolean类型的方法if(year%4==0&&year%1…

    2022年7月17日
  • 17款漂亮的 HTML5 网站模板免费下载「建议收藏」

    17款漂亮的 HTML5 网站模板免费下载「建议收藏」在过去的几年,设计师们已开始关注和使用HTML5了,如今HTML5得到了更加广泛的应用。今天,本文与大家分享17款免费的HTML5网站模板,看看有没自己喜欢的。

    2022年8月6日
  • rootfs.bin_libhdfs

    rootfs.bin_libhdfs忘了到底前几年看的一篇什么busybox的教程,写的及其复杂,以至于让我这么久以来一直不敢再去碰这个东西,直到今天又再次有了这个需求,特来再搞一次,没想到不到俩小时,一次搞定,特将这过程记录下来,以后也好有个参考。1环境宿主机:Ubuntu18.04交叉编译工具链:aarch64-linux-gnu-gcc7.4.0目标机:Armv8i.MX8EVKboard2下载…

    2022年10月7日
  • mysql图形化工具使用教程_mysql图形化管理工具介绍

    mysql图形化工具使用教程_mysql图形化管理工具介绍MySQL有许多图形化的管理工具,我们在此介绍二个官方的工具「MySQLAdministrator」及「MySQLQueryBrowser」。MySQLAdministrator是用来管理MySQLServer用的,您可以查看目前系统状态、新增使用者等。而MySQLQueryBrowser可以用来查看数据库内容。我们可以在一台Windows的机器上使用图形化的管理工具…

    2022年6月24日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号