#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它来创建一个实例。

NSUserDefaults保存用户名和密码的更多相关文章

  1. android 保存 用户名和密码 设置等应用信息优化

    1.传统的保存用户名,密码方式 SharedPreferences Editor editor = shareReference.edit(); editor.putString(KEY_NAME,& ...

  2. iOS 使用Keychain 保存 用户名和密码到 本地

    iOS 使用Keychain 保存 用户名和密码到 本地 之前曾把一些简单的数据保存在了plist,文件,及NsuserDefault里面, 但是如果要保存密码之类的,保存在本地就很不安全了: 但是利 ...

  3. Android简易实战教程--第十六话《SharedPreferences保存用户名和密码》

    之前在Android简易实战教程--第七话<在内存中存储用户名和密码> 那里是把用户名和密码保存到了内存中,这一篇把用户名和密码保存至SharedPreferences文件.为了引起误导, ...

  4. git保存用户名和密码

    git保存用户名和密码 简介:tortoiseGit(乌龟git)图形化了git,我们用起来很方便,但是我们拉取私有项目的时候,每次都要输入用户名和密码很麻烦,这里向大家介绍怎么避免多少输入 试验环境 ...

  5. 终于解决“Git Windows客户端保存用户名与密码”的问题(转载)

    add by zhj:不建议用这种方法,建议用SSH,参见 TortoiseGit密钥的配置 http://www.cnblogs.com/ajianbeyourself/p/3817364.html ...

  6. Git Windows客户端保存用户名和密码

    解决Git Windows客户端保存用户名和密码的方法,至于为什么,就不想说了. 1. 添加一个HOME环境变量,值为%USERPROFILE% 2. 开始菜单中,点击“运行”,输入“%Home%”并 ...

  7. TortoiseGit+msysgit保存用户名和密码

    本文以windows系统为例 保存用户名和密码 在C盘的c:\Users**qing** (或可能是C:\Users\Administrator) (替换自己的用户名)找到.gitconfig, 如果 ...

  8. Git Windows客户端保存用户名与密码

    1. 在Windows中添加一个HOME环境变量,值为%USERPROFILE%,如下图: 2. 在“开始>运行”中打开%Home%,新建一个名为“_netrc”的文件. 3. 用记事本打开_n ...

  9. 终于解决“Git Windows客户端保存用户名与密码”的问题

    这就是正确答案,我们已经验证过了,下面详细描述一下解决方法: 1. 在Windows中添加一个HOME环境变量,值为%USERPROFILE%,如下图: 2. 在“开始>运行”中打开%Home% ...

随机推荐

  1. iOS中MRC和ARC混编

    1. 在targets的build phases选项下Compile Sources下选择,不使用arc编译的文件.双击它.输入 -fno-objc-arc 就可以(这个类就能够使用MRC模式) 2. ...

  2. ACM之数论数字根

    先来看一道杭电的数字根问题 此题的大大意是输入一个数.假设它不是一位的数字的话,那么我们就将它的每一位都相加,相加后假设还是两位或者很多其它的话那么我们继续取出它的每一位数字进行相加.知道等到单个数字 ...

  3. hdu 5087 Revenge of LIS II ( LIS ,第二长子序列)

    链接:hdu 5087 题意:求第二大的最长升序子序列 分析:这里的第二大指的是,全部的递增子序列的长度(包含相等的), 从大到小排序后.排在第二的长度 cid=546" style=&qu ...

  4. Python常用的几种常用的内置函数

    abs(x)              用于返回绝对值 divmod(x,y)       函数中传入两个数字,返回的是x/y的一个结果的元组(商,余数) pow(x,y)            用于 ...

  5. 项目期复习总结1:背景图合并,hack,浏览器内核前缀,伪类after before

    文件夹: 1.背景图合并和CSS Spirit 2.PS基本快捷键 3.hack技术基本书写,为什么不用? 4.内核前缀 5.伪类afterbefore 1.背景图合并和CSS Spirit 背景图合 ...

  6. ym——优化你的Java代码(新)

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! 1.面向对象的3要素. 2.面向对象开发的6大原则. 1.单一职责原则 应该有且仅有一 ...

  7. [IT学习]阿铭Linux 微信公众号 每日一题 解析

    1.shell习题171020公布的昨日答案 习题171019 - 打印正方形 #!/bin/bash read -p "please input a number:" sum a ...

  8. AJAX请求提交数据

    1,AJAX准备知识:JSON JSON指的是JavaScript对象表示方法(JavaScript Object Notation) JSON是轻量级的文本数据交换格式 JSON独立于语言 JSON ...

  9. h5ai目录列表优化

    h5ai是HTTP Web服务器的现代文件索引器,专注于您的文件.目录以有吸引力的方式显示,浏览它们通过不同的视图,面包屑和树状概述增强.最初,h5ai是HTML5 Apache Index的缩写,但 ...

  10. anaconda tensorflow tflearn 自动安装脚本 anaconda使用-b可以非交互式安装

    install_dir=/usr/local/anaconda3 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )&qu ...