NSUserDefault的使用
NSUserDefaults对象是用来保存,恢复应用程序相关的偏好设置,配置数据等等。
默认系统允许应用程序自定义它的行为去迎合用户的喜好。你可以在程序运行的时候从用户默认的数据库中读取程序的设置。
同时NSUserDefaults的缓存避免了在每次读取数据时候都打开用户默认数据库的操作。可以通过调用synchronize方法来使内存中的缓存与用户默认系统进行同步。
NSUserDefaults是单例,同时也是线程安全的。
NSUserDefaults类提供了非常方便的方法来获取常用的类型,例如 floats,doubles,intergers,Booleans,URLs。所以一个NSUserDefaults的对象必须是属性表,这也就是说 我们可以存储NSData,NSString,NSNUmber,NSDate,NSArray,NSDictionary这些实例。
注意:
(1)如果你想存储其他类型的对象,你要将其归档并创建一个NSData来实现存储。
(2)从NSUserDefaults返回的值是不可改变的,即便是你在存储的时候使用的是可变的值。例如你使用mutable string做为“MyStringDefault”的值,当你做使用stringForKey:方法获取的值,这个值仍然是不可变的。
常用方法
创建实例:
NSUserDefaults *userDefault =[NSUserDefaults standardUserDefaults];
保存信息:
[userDefault setObject:@"YES"forKey:@"login"];
同步信息:
[userDefault synchronize];
查找信息:
[userDefaultobjectForKey:@"login"];
删除信息:
[userDefaultremoveObjectForKey:@"login"];
删除全部:
方法1 删除指定的从用户的默认持久域的内容
NSString *userDefaultApp = [[NSBundlemainBundle] bundleIdentifier];
[userDefaultremovePersistentDomainForName:userDefaultApp];
方法2 删除设备上所有的NSUserDefaults的设置
NSDictionary *dicts = [userDefaultdictionaryRepresentation];
for (id key in dicts)
{
[userDefault removeObjectForKey:key];
}
[userDefault synchronize];
获取全部:
NSDictionary *dicts = [userDefault dictionaryRepresentation];
其他事项
存储:
Nsuserdefaults保存的文件应用程序内置的一个plist文件里。
MAC查看路径:
在Xcode5及之前,存放路径:/Users/username/Library/Application Support/iPhoneSimulator/模拟器版本/Applications/UDID/Library 的Preferences文件夹下,自己程序命名.plist。
在Xcode6及之后,路径为:/Users/username/Library/Developer/CoreSimulator/Devices/模拟器UDID/data/Library,Preferences文件夹下。
打印查看路径:
NSLog(@"%@",NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES)[0]);