NSUserDefaults保存用户名和密码

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *nameTextField;
@property (weak, nonatomic) IBOutlet UITextField *ageTextField;

@end

@implementation ViewController


- (void)viewDidLoad {
    [super viewDidLoad];
    //1.测试部分:获取沙盒的Library目录
    NSArray *libraryPaths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
    NSString *libraryPath = [libraryPaths lastObject];
    NSLog(@"libraryPath:%@",libraryPath);
    
    //2.初始化数据(从第四步保存的数据,读取它,并显示)
    [self initDataByUserDefault];
    
    //3.在用户将后台程序移除后,需要知道针对这个动作的触发时间/方法(通知)
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:[UIApplication sharedApplication]];
    
    //4.在后面
}

- (void)initDataByUserDefault{
    //获取全局的NSUserDefaults对象
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    //使用defaults对象来获取保存的数据
    NSString *nameStr = [defaults objectForKey:@"name"];
    NSString *ageStr = [defaults objectForKey:@"age"];
    //将上步获取的数据,赋值给nameTextField
    if (nameStr) {
        self.nameTextField.text = nameStr;
    }
    if (ageStr) {
        self.ageTextField.text = ageStr;
    }
  
    
}

- (void)applicationWillDidEnterBackground:(NSNotification *)notitication{
    NSLog(@"测试:进入后台时机");
    //4.在触发方法中去保存你要保存的数据。
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:self.nameTextField.text forKey:@"name"];
    [defaults setObject:self.ageTextField.text forKey:@"age"];
    
    //强制将用户输入的名字和年龄数据保存到硬盘中
    //这里不是自己决定的,由系统决定 ,存在Library目录下。
    [defaults synchronize];
}

@end

 这段代码也可以根据自己的需要进行简化,比如说我是要在点击登录之后,触发保存UserDefault

- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    NSString *name = [userDefaults objectForKey:@"user"];
    NSString *pwd = [userDefaults objectForKey:@"pwd"];
    if (name) {
        self.userName.text = name;
    }
    if (pwd) {
        self.passWord.text = pwd;
    }
}

- (IBAction)login:(id)sender {
    
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:self.userName.text forKey:@"user"];
    [userDefaults setObject:self.passWord.text forKey:@"pwd"];
   [userDefaults synchronize];
    BViewController *BVC = [[BViewController alloc] init];
    [self.navigationController pushViewController:BVC animated:YES];

}

NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名、密码之类的,个人觉得使用NSUserDefaults是首选。下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息咯。

因为如果使用自己建立的plist文件什么的,还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不用管这些东西,就像读字符串一样,直接读取就可以了。

NSUserDefaults支持的数据格式有:NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL类型。

官方文档解释:

The NSUserDefaults class provides convenience methods for accessing common types such as floats, doubles, integers, Booleans, and URLs. A default object must be a property list, that is, an instance of (or for collections a combination of instances of): NSData, NSString, NSNumber, NSDate, NSArray, or NSDictionary. If you want to store any other type of object, you should typically archive it to create an instance of NSData

翻译:

NSUserDefaults类提供了便利的方法来访问常见类型如浮点,双精度,整数,布尔和url。一个默认的对象必须是一个属性列表,也就是说,的一个实例(或集合的组合的实例):NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary。如果你想存储其他类型的对象,通常你应该存档NSData它来创建一个实例。

转载于:https://www.cnblogs.com/endtel/p/4828882.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值