NSUserDefaults类用于保存应用程序设置和属性以及用户数据等轻量级数据。例如,你可以存储用户在应用程序中使用的图片或默认颜色方案。这些对象存储在iOS所谓的“defaults系统”中。iOS的defaults系统在整个app中都是可用的,因此存放到defaults系统中的数据也是整个应用程序生命周期中可用的。也就是说,无论用户关闭程序还是关机,在用户再次打开程序或开机后这些数据仍然存在。NSUserDefaults可以存储的数据类型包括:
如果你想保存其他类型,如UIImage,你应该进行编码(即archive),或者将它转换为NSData、NSNumber或者NSString。注意:密码最好不要存储在NSUserDefaults里,要存储也必须用AES/DES加密存储,更安全的方法是 https://github.com/ldandersen/scifihifi-iphone。
把密码存储在NSUserDefault or plist里的后果: http://www.shushao.com/news/info/item/203510-ios
用NSUserDefaults存储的数据下次程序运行的时候依然存在,它把数据存储在什么地方了?如何能够清除?
//将文本框的内容保存到NSUserDefaults
NSUserDefaults *savePtb = [NSUserDefaultsstandardUserDefaults];
[savePtbsetObject:self.textField.textforKey:@"input"];
//读取NSUserDefaults中的数据
NSUserDefaults *readPtb = [NSUserDefaultsstandardUserDefaults];
NSString *pstr = [readPtb objectForKey:@"input"];
有时候,我们需要在应用程序第一次打开时做一些事情,可以用NSUserDefaults来判断应用程序是否第一次执行,
可以在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法利进行判断:
NSUserDefaults *userDF= [NSUserDefaultsstandardUserDefaults];
NSNumber *number = [userDF objectForKey:@"H"];
if(number ==nil)//程序第一次执行
{
NSUserDefaults *userDF= [NSUserDefaultsstandardUserDefaults];
[userDF setValue:[NSNumbernumberWithBool:YES]forKey:@"H"];
[userDFsynchronize];
要执行的其他代码;
}
else//程序不是第一次执行
{
原文:http://blog.csdn.net/u012890196/article/details/19837655