NSUserDefaults的使用

写了一个模拟登录的界面

ViewController.h

- (IBAction)login:(UIButton *)sender;

ViewController.m

#import "ViewController.h"
#import "SecondViewController.h"
#define name @"Bob" //定义一个初始密码
#define password @"123456"


@interface ViewController ()
{
    UITextField * _textFieldTwo;
    UITextField * _textField;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    _textField = [[UITextField alloc]initWithFrame:CGRectMake(10,80, 300, 30)];
    
    [self.view addSubview:_textField];
    
    _textField.backgroundColor = [UIColor grayColor];
    
    _textFieldTwo = [[UITextField alloc]initWithFrame:CGRectMake(10,120, 300, 30)];
    
    [self.view addSubview:_textFieldTwo];
    
    _textFieldTwo.backgroundColor = [UIColor grayColor];
    
    NSUserDefaults * users = [NSUserDefaults standardUserDefaults];
    NSString * str1 = [users stringForKey:@"name"];//根据数据类型选择不同读取方式
    NSString * str2 = [users stringForKey:@"password"];
    _textField.text = str1;
    _textFieldTwo.text = str2;
    
    
    
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)login:(UIButton *)sender {
    
    
    /*
     - (nullable NSString *)stringForKey:(NSString *)defaultName;
     - (nullable NSArray *)arrayForKey:(NSString *)defaultName;
     - (nullable NSDictionary<NSString *, id> *)dictionaryForKey:(NSString *)defaultName;
     - (nullable NSData *)dataForKey:(NSString *)defaultName;
     - (nullable NSArray<NSString *> *)stringArrayForKey:(NSString *)defaultName;
     - (NSInteger)integerForKey:(NSString *)defaultName;
     - (float)floatForKey:(NSString *)defaultName;
     - (double)doubleForKey:(NSString *)defaultName;
     - (BOOL)boolForKey:(NSString *)defaultName;
     - (nullable NSURL *)URLForKey:(NSString *)defaultName NS_AVAILABLE(10_6, 4_0);
     
     */
    
    SecondViewController * secVC = [[SecondViewController alloc]init];
    
    NSUserDefaults * users = [NSUserDefaults standardUserDefaults];
    NSString * str1 = [users stringForKey:@"name"];//根据数据类型选择不同读取方式
    NSString * str2 = [users stringForKey:@"password"];
    
    if (str1.length>0 && str2.length>0) {
        
        if ([_textField.text isEqualToString:str1] &&
            [_textFieldTwo.text isEqualToString:str2]) {
            
            [self.navigationController pushViewController:secVC animated:YES];
            
        }else{
            
            UIView * view;
            if (view == nil) {
               
                view= [[UIView alloc]initWithFrame:CGRectMake((self.view.frame.size.width-200)/2, 180, 200, 100)];
                view.backgroundColor = [UIColor blackColor];
                view.alpha = 0.6;
                UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(60, 30, 80, 40)];
                [view addSubview:label];
                label.textColor = [UIColor whiteColor];
                label.text = @"登入失败";
                [self.view addSubview:view];
                
                view.layer.cornerRadius = 9;
                
                _textFieldTwo.text = nil;

            }
            
            
            [UIView animateWithDuration:2 animations:^{
                
                view.alpha = 0;
                
            }completion:^(BOOL finished) {
                
                [view removeFromSuperview];
                
            }];
        }
    }else{
        
        if ([_textField.text  isEqual: name] &&
            [_textFieldTwo.text  isEqual: password]) {
            
            [self.navigationController pushViewController:secVC animated:YES];
            
        }else{
            
            NSLog(@"密码错误");
            
        }
        
    }

}
@end

SecondViewController.h

---

SecondViewController.m

#import "SecondViewController.h"

@interface SecondViewController ()
{
    UITextField * _textFieldTwo;
    UITextField * _textField;
}

@end

@implementation SecondViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor whiteColor];
    
    _textField = [[UITextField alloc]initWithFrame:CGRectMake(10,80, 300, 30)];
    
    [self.view addSubview:_textField];
    
    _textField.backgroundColor = [UIColor grayColor];
    
    _textFieldTwo = [[UITextField alloc]initWithFrame:CGRectMake(10,120, 300, 30)];
    
    [self.view addSubview:_textFieldTwo];
    
    _textFieldTwo.backgroundColor = [UIColor grayColor];
    
    UIButton * button = [[UIButton alloc]initWithFrame:CGRectMake(50, 180, 80, 30)];
    
    button.backgroundColor = [UIColor greenColor];
    
    [button setTitle:@"改密码" forState:UIControlStateNormal];
    
    [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];

}
//更改密码
- (void)buttonAction:(UIButton*)button
{
    //注意这里创建的NSUserDefaults * users = [NSUserDefaults standardUserDefaults];
    //是一个单例对象,所以其他类里创建的话拿到的还是这个对象
    NSUserDefaults * users = [NSUserDefaults standardUserDefaults];
    [users setObject:_textField.text forKey:@"name"];
    [users setObject:_textFieldTwo.text forKey:@"password"];
}

NSUserDefaults的使用_第1张图片

输入密码正确则可更改密码NSUserDefaults的使用_第2张图片

你可能感兴趣的:(NSUserDefaults的使用)