NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名、密码之类的使用NSUserDefaults是首选。下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息。因为如果使用自己建立的plist文件什么的,还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不用管这些东西,就像读字符串一样,直接读取就可以了。
该数据实际上是以“键值对”形式保存的(类似于NSDictionary),因此我们需要通过key来读取或者保存数据(value)。
NSUserDefaults支持的数据格式有:
NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL类型
NSUserDefaults有2方法:
saveNSUserDefaults:用于将各种类型数据保存到NSUserDefaults中;
readNSUserDefautls:用于从NSUserDefaults中读取各种类型的数据。在viewDidLoad中调用这两个方法就可以看出结果;
获取一个NSUserDefaults引用:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
保存数据:
[userDefaults setInteger:1 forKey:@"crp"]; [userDefaults synchronize];
读取数据:
int i = [userDefaults integerForKey:@"crp"];
//保存数据: NSData *objColor = [NSKeyedArchiver archivedDataWithRootObject:[UIColor redColor]]; [[NSUserDefaults standardUserDefaults]setObject:objColor forKey:@"myColor"]; //读取数据: NSData *objColor = [[NSUserDefaults standardUserDefaults]objectForKey:@"myColor"]; UIColor *myColor = [NSKeyedUnarchiver unarchiveObjectWithData:objColor];
if (isRememberName) { //设置用户名和密码 [user setObject:userNameField.text forKey:@"userName"]; [user setObject:passwordField.text forKey:@"passWord"]; [user synchronize]; }else{ //取消记住密码 [user removeObjectForKey:@"userName"]; [user removeObjectForKey:@"passWord"]; //调用synchronize函数将立即更新这些默认值。 [user synchronize]; }
其实它存储在应用程序内置的一个plist文件里,这个可以根据路径看到。
比如说这个是你的程序沙盒位置
/UsersLibrary/Application Support/iPhoneSimulator/4.1/Applicati*****/29788E40-AF47-45A0-8E92-3AC0F501B7F4/,(这个是应用程序对应在mac上的位置)
这个下面有/Library/Prefereces,里面有个plist文件,存储的就是你的userDefaults
想要删掉的话,用removeObjectForKey或者删掉沙盒,也就是你的应用程序然后重新安装。