创建一个user defaults方法有多个,最简单得快速创建方法:

NSUserDefaults *accountDefaults = [NSUserDefaultsstandardUserDefaults];

添加数据到 user defaults:

[accountDefaults setObject:nameField.text forKey:UserDefaultNameKey];

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

[accountDefaults setBool:YES forKey:UserDefaultBoolKey];

从user defaults中获取数据:

[accountDefaults objectForKey:NCUserDefaultNameKey]

[accountDefaults boolForKey: UserDefaultBoolKey];

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

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

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

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

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

- (void)defaultCheck:(id)sender

{

NSLog(@" check按钮被按下   ");

NSUserDefaults *accountDefaults = [NSUserDefaults standardUserDefaults];

if ([accountDefaults boolForKey:NCUserDefaultBoolForRegister] == NO)

{

((UIButton*)sender).selected = YES;

[accountDefaults setBool:YES forKey:NCUserDefaultBoolForRegister];

[accountDefaults setObject:nameField.text forKey:NCUserDefaultNameKey];

[accountDefaults setObject:pwdField.textforKey:NCUserDefaultPasswordKey];

}

else {//YES

((UIButton*)sender).selected = NO;

[accountDefaults setBool:NO forKey:NCUserDefaultBoolForRegister];

[accountDefaults setObject:nil forKey:NCUserDefaultNameKey];

[accountDefaults setObject:nil forKey:NCUserDefaultPasswordKey];

}

}

 

- (void)loadView {

[super loadView];

nameField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 100, 30)];

pwdField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 100, 30)];

[nameField setCenter:CGPointMake(160, 100)];

[pwdField setCenter:CGPointMake(160, 150)];

NSUserDefaults *accountDefaults = [NSUserDefaults standardUserDefaults];

//存的是bool值一定要用boolForKey:获取

//如果之前已经保存了User Defaults,那么在读取的时候就要将数据读取出来,显示在用户名和密码框中(这里没有加密)。

if ([accountDefaults boolForKey:NCUserDefaultBoolForRegister] == YES) {

nameField.text = [accountDefaults objectForKey:NCUserDefaultNameKey];

pwdField.text = [accountDefaults objectForKey:NCUserDefaultPasswordKey];

}

else

{

[nameField setPlaceholder:@"用户名"];

[pwdField setPlaceholder:@"密码"];

}

nameField.borderStyle = UITextBorderStyleBezel;

[pwdField setBorderStyle:UITextBorderStyleRoundedRect];

[self.view addSubview:nameField];

[self.view addSubview:pwdField];

UIButton * loginBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

[loginBtn setFrame:CGRectMake(0, 0, 50, 30)];

[loginBtn setCenter:CGPointMake(200, 200)];

[loginBtn addTarget:self action:@selector(loginToWeiBo:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:loginBtn];

UIButton * checkBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

[checkBtn setFrame:CGRectMake(0, 0, 20, 20)];

[checkBtn setCenter:CGPointMake(160, 180)];

//选中之后得图标

[checkBtn setBackgroundImage:[UIImage imageNamed:@"lock.png"] forState:(UIControlState)UIControlStateHighlighted];

[checkBtn setBackgroundImage:[UIImage imageNamed:@"lock.png"] forState:(UIControlState)UIControlStateSelected];

//未选中

[checkBtn setBackgroundImage:[UIImage imageNamed:@"unlock.png"] forState:(UIControlState)UIControlStateNormal];

[checkBtn addTarget:self action:@selector(defaultCheck:) forControlEvents:UIControlEventTouchUpInside];

//用户名和密码已经保存

if([accountDefaults boolForKey:NCUserDefaultBoolForRegister] == YES)

{

[checkBtn setSelected:YES];

}

[self.view addSubview:Btn];

}

NSUserDefaults的使用的更多相关文章

  1. IOS数据存储之NSUserDefaults

    前言: 作为从事Android开发人来说一定听说过SharedPreferences,然后要成为一名ios开发工程师来说咋能不知道NSUserDefaults!接下来让我们认识一下. NSUserDe ...

  2. iOS关于NSUserDefaults存,写, 删的问题

      我们知道NSUserDefaults可以保存某些信息在本地,例如登录的账号,密码等等,当我们使用NSUserDefaults时,它是将信息写入到本地的一个plist文件里,我们都知道 删除plis ...

  3. NSUserDefaults:熟悉与陌生(转)

    转载自:http://swiftcafe.io/2016/04/04/nsuserdefaults/?hmsr=toutiao.io&utm_medium=toutiao.io&utm ...

  4. ios数据永久存储之----NSUserDefaults

    我们在开发app时不可避免的会在本地存储一些数据,NSUserDefaults就是系统提供的一个用来数据存储的类,本片文章就来介绍一些NSserdefazults的用法. 详细内容:https://m ...

  5. NSUserDefaults存取失败

    解决办法: 1.存储NSUserDefaults时,强制NSUserDefault存入沙盒 [[NSUserDefaults standardUserDefaults] setObject:sAcco ...

  6. NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象

    摘要: NSUserDefaults适合存储轻量级的本地数据,一些简单的数据(NSString类型的)例如密码,网址等,NSUserDefaults肯定是首选,但是如果我们自定义了一个对象,对象保存的 ...

  7. [MISS静IOS开发原创文摘]-AppDelegate存储全局变量和 NSUserDefaults standardUserDefaults 通过模型保存和读取数据,存储自定义的对象

    由于app开发的需求,需要从api接口获得json格式数据并保存临时的 app的主题颜色 和 相关url 方案有很多种: 1, 通过AppDelegate保存为全局变量,再获取 2,使用NSUSerD ...

  8. iOS开发 首次启动显示用户引导,第二次启动直接进入App,UIScrollView,UIPageControl,NSUserDefaults

    首先创建一个引导图的控制器类 UserGuideViewController.h和UserGuideViewController.m #import <UIKit/UIKit.h> #im ...

  9. NSUserDefaults

    一.了解NSUserDefaults以及它可以直接存储的类型二.使用 NSUserDefaults 存储自定义对象1.将自定义类型转换为NSData类型2.将自定义类型数据存入 NSUserDefau ...

随机推荐

  1. iOS 面试题(二):什么时候在 block 中不需要使用 weakSelf --转自唐巧

    问题 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码: __weak typeof(self) weakSelf ...

  2. LeetCode First Unique Character in a String

    原题链接在这里:https://leetcode.com/problems/first-unique-character-in-a-string/ 题目: Given a string, find t ...

  3. Oracle之nclob类型

    此类型会严重影响查询效率,请少用: nclob字段在查询结果中显示为<NCLOB>,查看nclob类型的值方法有两种 a.可点开...查看具体数据 b.选择所有数据,右击复制到Excel, ...

  4. RabbitMQ学习总结 第七篇:RCP(远程过程调用协议)

    在http://www.cnblogs.com/leocook/p/mq_rabbitmq_2.html 这篇博文中我们实现了怎么去使用work queue来把比较耗时的任务分散给多个worker. ...

  5. setTimeout调用带参数的函数的方法

    function test(s){    alert(s);}window.setTimeout(function(){test('str');},1000);这样就可以了...为什么是这样呢.因为s ...

  6. ios10 xcode8 适配的那些事

    1.首先open Url 废弃了. http://www.tuicool.com/articles/jiMr2qA

  7. Zookeeper:通过yarn实现大型分布式管理系统

    http://www.cnblogs.com/leesf456/p/6063694.html

  8. 批判性思维——Asking The Right Questions

    我们生活在一个纷繁复杂的数字世界中,每天都在信息海洋中遨游.如果不想被其淹没,继而成为别人思想的傀儡,就有必要对你接受的信息进行批判.筛选,自己决定该相信什么不该相信什么,进而形成自己的观点,而不是一 ...

  9. hashmap的底层实现

    HashMap的底层实现都是数组+链表结构实现的,添加.删除.获取元素都是先计算hash值,根据hash值和table.length计算出index也就是table的数组的下标,然后进行相应的操作. ...

  10. 渗透技术--SQL注入写一句话木马原理

    讲一下SQL注入中写一句话拿webshell的原理,主要使用的是 SELECT ... INTO OUTFILE 这个语句,下面是一个语句的例子: SELECT * INTO OUTFILE 'C:\ ...