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

最新文章

  1. RAM、DRAM、SD卡
  2. Linxu 安装Scala
  3. java之运算符
  4. Spring3中的mvc:interceptors标签配置拦截器
  5. pagefile.sys and heberfil.sys
  6. Linux Program
  7. BZOJ2435: [Noi2011]道路修建
  8. 1. SQL Server服务器监控实现方法
  9. Dubbo入门实例--转载
  10. awakeFromNib小总结
  11. UVA 1386 Cellular Automaton
  12. Zookeeper ZAB 协议分析
  13. 本地的jar包添加到maven库中 jdbc举例
  14. Error:Cannot compile Groovy files: no Groovy library is defined for module 'xxxx' 错误处理
  15. 设置Web AppBuilder的HTTP代理
  16. Windows下Git服务端和客户端的搭建
  17. 东东糖博客MYSQL
  18. 从零开始的全栈工程师——html篇1.7
  19. According to TLD, tag fmt:formatDate must be empty, but is not 问题的解决
  20. Linux 150命令之 文件和目录操作命令 ls

热门文章

  1. FZU 2150 Fire Game (暴力BFS)
  2. Linux Shell_test
  3. Eclipse导入项目: No projects are found to import
  4. 【剑指offer】数组中仅仅出现一次的数字(1)
  5. IDEA--java版本修改(jdk1.8改成jdk1.7)
  6. 在VC6.0中多线程编程演示样例(带同步信号量)
  7. java方法返回值的变量类型困惑
  8. leetCode 81.Search in Rotated Sorted Array II (旋转数组的搜索II) 解题思路和方法
  9. <s:property>的用法(jsp获取action中的值或者方法)
  10. 什么是cookie?session和cookie的区别?