ios中NSUserDefaults的使用

来源:互联网 发布:语音软件 编辑:程序博客网 时间:2024/06/07 11:35
创建一个user defaults方法有多个,最简单得快速创建方法:

[plain] view plaincopy
  1. NSUserDefaults *accountDefaults = [NSUserDefaults standardUserDefaults];  

添加数据到 user defaults:

[plain] view plaincopy
  1. [accountDefaults setObject:nameField.text forKey:UserDefaultNameKey];  

也可以添加基本数据类型int, float, bool等,有相应得方法

[plain] view plaincopy
  1. [accountDefaults setBool:YES forKey:UserDefaultBoolKey];  

user defaults中获取数据:

[plain] view plaincopy
  1. [accountDefaults objectForKey:NCUserDefaultNameKey]    
  2. [accountDefaults boolForKey: UserDefaultBoolKey];  

要点: 

NSUserDefaults非常好用,并不需要用户在程序中设置NSUserDefaults的全局变量,需要在哪里使用NSUserDefaults的数据,那么就在哪里创建一个NSUserDefaults对象,然后进行读或者写操作。

针对同一个关键字对应的对象或者数据,可以对它进行重写,重写之后关键字就对应新的对象或者数据,旧的对象或者数据会被自动清理。


以下是一个我自己写的例子,通过checkBtn按钮进行保存用户名和密码:


图片一:保存数据之前;或者上一次没有保存数据,第二次启动的界面


图片二:保存了数据,第二次打开所看到的启动初始界面

[plain] view plaincopy
  1. - (void)defaultCheck:(id)sender  
  2. {     
  3.  NSLog(@" check按钮被按下   ");  
  4.  NSUserDefaults *accountDefaults = [NSUserDefaults standardUserDefaults];  
  5.  if ([accountDefaults boolForKey:NCUserDefaultBoolForRegister] == NO)  
  6.  {  
  7.   ((UIButton*)sender).selected = YES;  
  8.   [accountDefaults setBool:YES forKey:NCUserDefaultBoolForRegister];  
  9.   [accountDefaults setObject:nameField.text forKey:NCUserDefaultNameKey];  
  10.   [accountDefaults setObject:pwdField.text forKey:NCUserDefaultPasswordKey];  
  11.  }  
  12.  else {//YES  
  13.   ((UIButton*)sender).selected = NO;  
  14.   [accountDefaults setBool:NO forKey:NCUserDefaultBoolForRegister];  
  15.   [accountDefaults setObject:nil forKey:NCUserDefaultNameKey];  
  16.   [accountDefaults setObject:nil forKey:NCUserDefaultPasswordKey];  
  17.  }  
  18. }  
  19.   
  20. - (void)loadView {  
  21.   [super loadView];  
  22.   
  23.  nameField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 100, 30)];  
  24.  pwdField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 100, 30)];  
  25.  [nameField setCenter:CGPointMake(160, 100)];  
  26.  [pwdField setCenter:CGPointMake(160, 150)];  
  27.    
  28.  NSUserDefaults *accountDefaults = [NSUserDefaults standardUserDefaults];  
  29.    
  30.         //存的是bool值一定要用boolForKey:获取  
  31.         //如果之前已经保存了User Defaults,那么在读取的时候就要将数据读取出来,显示在用户名和密码框中(这里没有加密)。  
  32.  if ([accountDefaults boolForKey:NCUserDefaultBoolForRegister] == YES) {  
  33.   nameField.text = [accountDefaults objectForKey:NCUserDefaultNameKey];  
  34.   pwdField.text = [accountDefaults objectForKey:NCUserDefaultPasswordKey];  
  35.  }  
  36. else  
  37.  {  
  38.     [nameField setPlaceholder:@"用户名"];  
  39.         [pwdField setPlaceholder:@"密码"];  
  40.  }  
  41.    
  42.  nameField.borderStyle = UITextBorderStyleBezel;  
  43.  [pwdField setBorderStyle:UITextBorderStyleRoundedRect];  
  44.  [self.view addSubview:nameField];  
  45.  [self.view addSubview:pwdField];  
  46.    
  47.  UIButton * loginBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];  
  48.  [loginBtn setFrame:CGRectMake(0, 0, 50, 30)];  
  49.  [loginBtn setCenter:CGPointMake(200, 200)];  
  50.  [loginBtn addTarget:self action:@selector(loginToWeiBo:) forControlEvents:UIControlEventTouchUpInside];  
  51.  [self.view addSubview:loginBtn];  
  52.    
  53.  UIButton * checkBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];  
  54.  [checkBtn setFrame:CGRectMake(0, 0, 20, 20)];  
  55.  [checkBtn setCenter:CGPointMake(160, 180)];  
  56.    
  57.   //选中之后得图标  
  58.  [checkBtn setBackgroundImage:[UIImage imageNamed:@"lock.png"] forState:(UIControlState)UIControlStateHighlighted];  
  59.  [checkBtn setBackgroundImage:[UIImage imageNamed:@"lock.png"] forState:(UIControlState)UIControlStateSelected];  
  60.    
  61.      //未选中  
  62.  [checkBtn setBackgroundImage:[UIImage imageNamed:@"unlock.png"] forState:(UIControlState)UIControlStateNormal];  
  63.  [checkBtn addTarget:self action:@selector(defaultCheck:) forControlEvents:UIControlEventTouchUpInside];  
  64.    
  65.   //用户名和密码已经保存  
  66.  if([accountDefaults boolForKey:NCUserDefaultBoolForRegister] == YES)   
  67.  {  
  68.   [checkBtn setSelected:YES];  
  69.  }  
  70.    
  71.  [self.view addSubview:Btn];  
  72. }  
0 0
原创粉丝点击