创建一个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. docker在centos7下的一些坑

    在centos的docker上安装mysql提示chown mod /var/lib/mysql permission denied,通过下面的方法1解决. 在centos上挂载数据卷,在容器内部访问 ...

  2. django 1.7之后python manage.py syncdb没有了

    在命令行输入python manage.py createsuperuser按照提示输入即可记得先初始化表. django>1.7 python manage.py makemigrations ...

  3. react lazyload

    思路: DOM加载时,<img> 标签里,添加data-src路径 = src 路径, src路径 = 本地默认图片路径, DOM加载完成后,监听页面可视区域,有data-src时,就将s ...

  4. linux------------centos防火墙

    CentOS7默认的防火墙不是iptables,而是firewalle. 你可以用rpm -qa | grep iptables来查看,一般会出现两个一个是iptables 另一个是iptables. ...

  5. memcached SASLAUTH 启动

    1.环境描述: Linux 服务器,memcached1.4.5 登录linux的用户名tuxedo,密码tuxedo 2.启动memcached sasl认证 p.p1 { margin: 0.0p ...

  6. 【原创】linux 批量清空文本内容

    清空所有PHP文件 find . -name '*.php'|xargs sed -i '1,$d' 清空所有文件 find . -type f|xargs sed -i '1,$d'

  7. Android 自定义view (一)——attr 理解

    前言: 自定义view是android自定义控件的核心之一,那么在学习自定义view之前,我们先来了解下自定义view的自定义属性的attr的用法吧 Android attr 是什么 (1)attr ...

  8. 浅谈大型web系统架构

    动态应用,是相对于网站静态内容而言,是指以c/c++.php.Java.perl..net等服务器端语言开发的网络应用软件,比如论坛.网络相册.交友.BLOG等常见应用.动态应用系统通常与数据库系统. ...

  9. Win7开机登陆密码忘记了?不必重做系统(详图)

     1)如果是普通账户密码忘了.方法:重新启动电脑,启动到系统登录界面时,同时按住Ctrl+Alt键,然后连击Del键两次,会出现新的登录界面,用户名处输入“Administrator”密码为空,回车即 ...

  10. 易语言调用windows消息函数

    1.SendMessageCallbackA的调用方法 .版本2 .DLL命令 发送消息返回_, 整数型, "user32.dll", "SendMessageCallb ...