NSUserDefaults

NSUserDefaults 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”key为This_is_my_default_message。 在加上句[[NSUserDefaults standardUserDefaults] synchronize];,这样这个设置就存到默认参数中了。 也见过别人把默认参数的设置写到applicationDidFinishLaunching注册的, - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {      NSDictionary *defaultValues = [NSDictionary dictionaryWithObjectsAndKeys:                                    @"This_is_my_default_message", @"message",                                    nil];     [[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues];     [[NSUserDefaultsController sharedUserDefaultsController] setInitialValues:defaultValues]; } 固然写到applicationDidFinishLaunching中注册和不写到里面效果是同样的,只是代码的优美问题。
相关文章
相关标签/搜索