ios NSUserDefaults存储数据(偏好设置)
ios NSUserDefaults存储数据(偏好设置)
1.NSUserDefaults用于存储数据量小的数据,主要是用户配置,但也可以支持存储一些小数据
包括:NSString, NSNumber, NSDate, NSArray, NSDictionary
2.数据存放于一个plist文件中。这个文件位于在 app同级目录的/Library/Preferences目录下
3.NSUserDefaults主要是 setObject 和 object ForKey,大数据使用其他的存储,如Sqlite3,CoreDate等;
4.使用偏好设置对数据进行保存之后, 它保存到系统的时间是不确定的,会在将来某一时间点自动将数据保存到Preferences文件夹下面,如果需要即刻将数据存储,可以使用[defaults synchronize];
1.偏好设置的plist文件存放地址
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSLog(@"%@", path);
2.读存入NSString(NSNumber,NSDate)
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
// 写入数据
[defaults setObject:@"testString" forKey:@"test1"];
// 立即写入
[defaults synchronize]; // 读取数据
NSString *str = [defaults objectForKey:@"test1"];
NSLog(@"---%@",str);
3.读存入NSArray,NSDictionary
NSArray,NSDictionary为不可变类型,也是类似的。
但是,如果存入的是NSMutableArray,NSMutableDictionary,读出来的数组是不可变的类型为:NSCFArray。需要进行转变为NSMutableArray.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"test1", @"test2", @"test3", nil];
[array addObject:@"test4"];
// 写入数据
[defaults setObject:array forKey:@"test2"];
// 立即写入
[defaults synchronize]; // 读取数据
// reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object' 这样直接等于的话mutableArray的类型为NSCFArray,不能继续往数组里面添加
// NSMutableArray *mutableArray = [defaults objectForKey:@"test2"];
NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:[defaults objectForKey:@"test2"]];
[mutableArray addObject:@"test5"];
NSLog(@"%@",mutableArray);
ios NSUserDefaults存储数据(偏好设置)的更多相关文章
- iOS开发UI篇—ios应用数据存储方式(偏好设置)
iOS开发UI篇—ios应用数据存储方式(偏好设置) 一.简单介绍 很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能 每个应用 ...
- ios应用数据存储方式(偏好设置)-转
一.简单介绍 1.很多ios应用都支持偏好设置,比如保存用户名,密码,字体大小等设置,ios提供了一套标准的解决方案来为应用加入偏好设置功能. 2.每个应用都有个NSUserDefaults实例,通过 ...
- iOS:沙盒、偏好设置、归档、解归档
一.沙盒和应用程序包 •iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被称为沙盒 •iOS常用目录: –Bundle –Documents –Library/Ca ...
- 数据存储之偏好设置NSUserDefaults
NSUserDefaults做数据存储也是比较常用,适合轻量级的本地数据存储,读取也很方便. 一.支持的数据类型如下图(NSString.NSArray.NSDictionary.NSData.NSI ...
- IOS第13天(2,私人通讯录,plist存储,偏好设置,归档)
***************plist存储 // 当点点击保存的时候调用 //保存 - (IBAction)save:(id)sender { // 获取沙盒的根路径 // NSString *ho ...
- ios存储 plist 偏好设置 自定义对象存储
1,plist Plist注意:不能存储自定义对象 Plist:数组和字典, 如何判断一个对象能不能使用Plist,就看下有没有writeToFile 获取应用的文件夹(应用沙盒) NSString ...
- iOS开发-本地存储(偏好设置,Plist,归档)
1. NSUserDefaults //TODO: 1.NSUserDefaults NSUserDefaults类除了可以存储数组.字典.NSdata外,还可以直接存储OC基本类型属性.但是不能 ...
- iPhone开发之使用NSUserDefaults存储数据
NSUserDefaults是什么,有什么用处 对于应用来说,每个用户都有自己的独特偏好设置,而好的应用会让用户根据喜好选择合适的使用方式,把这些偏好记录在应用包的plist文件中,通过NSUserD ...
- iOS学习之应用偏好设置
如今,即便是最简单的计算机程序也会包含一个偏好设置窗口,用户可以在其中设置应用专属的选项.在MAC OS X中,Preferences...菜单通常位于应用菜单中.选择该菜单项会弹出一个窗口,用户可以 ...
随机推荐
- VS Code 使用笔记
改变 UI 语言 How to change UI language in Visual Studio Code? 设置 Tab 空格 How to set tab-space style?
- nginx的websock问题解决
生产环境中有一个项目需要使用到websock,但是项目上线后发现websock连接后马上断开,但是在测试环境没有问题,后来就想到配置文件和nginx版本问题 核对后发现,nginx和配置文件都是相同的 ...
- Linux sort命令使用方法
sort命令在Linux中主要用于对文件进行排序,并将排序结果输出.sort命令输入可以是指定的文件和数据流.本文主要介绍sort命令的基本语法和常见使用实例. sort命令语法 sort命令格式:s ...
- Python调用外部系统命令
利用Python调用外部系统命令的方法可以提高编码效率.调用外部系统命令完成后可以通过获取命令执行返回结果码.执行的输出结果进行进一步的处理.本文主要描述Python常见的调用外部系统命令的方法,包括 ...
- Android EventBus3.x 使用详解
♪(^∇^*) 五一假期在家无事,新项目中用的是RxJava2+EventBus感觉还不错,趁这闲暇总结下EventBus. 一.概要简述 EventBus是一个基于观察者模式的Android事件发布 ...
- 基于Delphi的接口编程入门
为什么使用接口? 举个例子好了:有这样一个卖票服务,电影院可以卖票,歌剧院可以卖票,客运站也可以卖票,那么我们是否需要把电影院..歌剧院和客运站都设计成一个类架构以提供卖票服务?要知道,连经理人都可以 ...
- AnimCheckBox按钮点击动画效果《IT蓝豹》
AnimCheckBox按钮点击动画效果 AnimCheckBox按钮点击动画效果,点击选中后勾选框选择效果,很不错的动画功能.项目来源:https://github.com/lguipeng/Ani ...
- beta分布 java代码
public class BetaDistributionActivity { /** * @param alpha: eg. click * @param beta : eg. pv - click ...
- python基础学习Day10 函数形参的动态参数、*args **kwargs 命名空间 global 与 nonlocal
一.函数形参的动态参数 原因:为了拓展,对于实参数量不固定,故需要万能参数,即动态参数, *args **kwargs # def sum1(*args): # 在函数定义时,在*位置参数,聚合. ...
- vue组件知识点
1.组件的定义 const component = { props: { //外部父组件约束子组件的 里面不要修改 可以通过触发事件来修改 active: Boolean, propOne: Stri ...