iOS 偏好设置 NSUserDefault
NSUserDefaults类提供了一个与系统进行交互的编程接口,用来存储、恢复应用程序的偏好设置和配置数据等,适合存储轻量级的本地数据。比如保存一个登陆界面的数据,例如用户名、密码之类的。
如果使用plist文件存储,那么就要自己创建文件,读取文件,很麻烦。同时NSUserDefaults的缓存还避免了再每次读取数据的时候都打开数据库的操作.而用NSUserDefaults则不用管这些东西,直接存储或读取就好了。
NSUserDefaults是单例的,同时也是线程安全的。
NSUserDefaults支持的数据类型有:BOOL、NSNumber(Integer、Float、Double)、NSString、NSData、NSDate、NSArray、NSDictionary、NSObject<NSCoding>
注意:
(1)自定义类可以通过NSData的方式进行存储,不过要实现NSCoding这个protocol才行,NSObject<NSCoding>
(2)系统会保存到该应用下的/Library/Preferences/gongcheng.plist文件中。需要注意的是如果程序意外退出,NSUserDefaultsstandardUserDefaults数据不会被系统写入到该文件,所以,要使用[[NSUserDefaultsstandardUserDefaults] synchronize]命令直接同步到文件里,来避免数据的丢失。
(3)从NSUserDefaults返回的值并不是不可改变的,即使是存储的时候使用可变值,当你使用 stringForKey: 方法获取的值,这个值仍然是不可改变的,如果要改变需使用duplicated。
代码如下:
//
// ViewController.m
// NSUserDefaultsDemo
//
// Created by 555chy on 6/25/16.
// Copyright © 2016 555chy. All rights reserved.
//#import "ViewController.h"@interface ViewController ()
@end
@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.//NSUserdefaults支持的数据格式有:BOOL、NSNumber(integer、float、double)、NSString、NSDate、NSArray、NSDictionary等NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];//写入数据bool sBOOL = YES;NSInteger sInteger = 1;float sFloat = 2.3;double sDouble = 4.5;NSString *sString = @"string";//const char *str = "abcdefg";//NSData *sData = [NSData dataWithBytes:str length:strlen(str)];NSData *sData = [sString dataUsingEncoding:NSUTF8StringEncoding];NSDate *sDate = [NSDate date];NSArray *sArray = [NSArray arrayWithObjects:@"array1", @"array2", @"array3", nil];NSDictionary *sDictionary = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"chy", @"24", @"YES", nil] forKeys:[NSArray arrayWithObjects:@"name", @"age", @"isMale", nil]];[userDefaults setBool:sBOOL forKey:@"bool"];[userDefaults setInteger:sInteger forKey:@"integer"];[userDefaults setFloat:sFloat forKey:@"float"];[userDefaults setDouble:sDouble forKey:@"double"];[userDefaults setObject:sString forKey:@"string"];[userDefaults setObject:sData forKey:@"data"];[userDefaults setObject:sDate forKey:@"date"];[userDefaults setObject:sArray forKey:@"array"];[userDefaults setObject:sDictionary forKey:@"dictionary"];//这里建议同步存储到磁盘中,但不是必须的,因为数据会自动缓存到内存中[userDefaults synchronize];//读取数据BOOL gBOOL;NSInteger gInteger;float gFloat;double gDouble;NSString *gString;NSData *gData;NSDate *gDate;NSArray *gArray;NSDictionary *gDictionary;gBOOL = [userDefaults boolForKey:@"bool"];gInteger = [userDefaults integerForKey:@"integer"];gFloat = [userDefaults floatForKey:@"float"];gDouble = [userDefaults doubleForKey:@"double"];gString = [userDefaults stringForKey:@"string"];gData = [userDefaults objectForKey:@"data"];gDate = [userDefaults objectForKey:@"date"];gArray = [userDefaults objectForKey:@"array"];gDictionary = [userDefaults objectForKey:@"dictionary"];NSLog(@"gBool = %d", gBOOL);NSLog(@"gInteger = %ld", gInteger);NSLog(@"gFloat = %f", gFloat);NSLog(@"gDouble = %lf", gDouble);NSLog(@"gString = %@", gString);NSLog(@"gData = %@", [[NSString alloc] initWithData:gData encoding:NSUTF8StringEncoding]);NSLog(@"gDate = %@", gDate);NSLog(@"gArray = %@", gArray);NSLog(@"gDictionary = %@", gDictionary);
}- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}@end
测试截图:
iOS 偏好设置 NSUserDefault相关推荐
- iOS偏好设置的存储注意事项
// // ViewController.m // 偏好设置 // // Created by GuoYule on 15/3/10. // Copyright (c) 2015年 GuoYu ...
- iOS开发之iOS程序偏好设置(Settings Bundle)的使用
2019独角兽企业重金招聘Python工程师标准>>> 在Android手机上, 在某个程序里,通过按Menu键,一般都会打开这个程序的设置,而在iOS里,系统提供了一个很好的保存程 ...
- iOS之应用偏好设置
为什么80%的码农都做不了架构师?>>> 如今,即便是最简单的计算机程序也会包含一个偏好设置窗口,用户可以在其中设置应用专属的选项.在MAC OS X中,Preferences ...
- iOS开发之数据存储之Preference(偏好设置)
1.概述 很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能. 每个应用都有个NSUserDefaults实例,通过它来存取偏好 ...
- ios应用数据存储方式(偏好设置)
iOS开发UI篇-ios应用数据存储方式(偏好设置) 一.简单介绍 很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能 每个应用 ...
- ios应用数据存储方式(偏好设置)-转
一.简单介绍 1.很多ios应用都支持偏好设置,比如保存用户名,密码,字体大小等设置,ios提供了一套标准的解决方案来为应用加入偏好设置功能. 2.每个应用都有个NSUserDefaults实例, ...
- iOS开发UI篇—ios应用数据存储方式(偏好设置)
一.简单介绍 很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能 每个应用都有个NSUserDefaults实例,通过它来存取偏 ...
- iOS学习笔记15 序列化、偏好设置和归档
###一.本地持久化 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist ...
- iOS火焰动画效果、图文混排框架、StackView效果、偏好设置、底部手势等源码
iOS精选源码 高性能图文混排框架,构架顺滑的iOS应用. 使用OpenGLE覆盖阿尔法通道视频动画播放器视图. 可选最大日期截至当日日期的日期轮选器ChooseDatePicker 简单轻量的图片浏 ...
最新文章
- 【Java常识】6.0面向对象认知和Eclipse的实用使用、==号和equals方法的区别
- 冒泡排序 小白学demo_day2
- 【渝粤教育】电大中专学前儿童科学教育1作业 题库
- java 使用三元运算符和if-else获取两个和三个数中的最大值
- Eclipce Luna 离线安装ADT23
- 【M25】将构造方法和非成员方法虚化
- ubuntu 16卸载mysql_ubuntu16.04 彻底卸载MySQL
- vue 给checkbox 赋值_浅谈vue中关于checkbox数据绑定v-model指令的个人理解
- 【Janino】Janino框架初识与使用教程
- C++静态数据成员与静态函数(案例分析)
- 深入学习 Redis(1):Redis 内存模型
- thoughtworks作业trains
- blowfish java_blowfish加密算法
- OpenCV实现照片自动红眼去除
- Scrum在大型游戏团队中的应用
- 审计溯源 | IP-guard终端操作审计,助力高效防控泄密风险
- 数智赋能,新华三打造郑州“智美新城”
- 自动解决智能拼图,A*算法
- 北航考研计算机学院,北航计算机学院考研经验
- JavaWeb frontTools / fronttool / web design