QF——iOS中数据持久化的几种方式
数据持久化的几种方式:
一、属性列表文件:
.plist文件是种XML文件。数组,字典都可以和它互相转换。数组和字典可以写入本地变成plist文件。也可以读取本地plist文件,生成数组或字典。
读取plist文件生成数组:plist——>NSArray

把数组写入plist文件:NSArray——>plist

二、NSUserDefaults:
它是单例的。通过[NSUserDefaults standardUserDefaults];提供唯一的实例
NSUserDefaults存储数据,本质上就是属性列表plist文件里。只不过是系统提供的,存储位置固定的,它存储在沙盒的Library目录下的Prefereces文件里。
保存数据:

读取数据:

另外,NSUserDefaults还可以使用应用程序束Bundle,使项目可以出现在手机的“设置”中,通过可视化的图形界面来保存用户偏好设置(保存设置)。等用户在图形界面设置好偏好后,在代码中同样是通过上面的代码来读取数据的。Bundle文件的创建:参考链接
三、归档:
“归档”类似于“序列化”。所谓序列化就是:把对象转化为字节流,以便保存和传输。有所不同的是“归档”是指自定义对象,而“序列化”指特定的原生类对象(NSDate,NSArray,NSDictionary等)。
NSUserDefaults的缺点是它只能存储系统原生类,而“归档”却可以存储任何对象,只要该对象实现了NSCoding协议。
那怎么归档呢?
1.自定义的类必须要实现NSCoding协议。
2.重写该协议里的编码方法,对对象的每个属性进行编码,使其都为字节流。encodeWithCoder:
3.调用NSKeyArichiver的类方法,完成归档。 [NSKeyedArichiver archiveRootObject:array toFile:homePath];
四、sqlite数据库:
iOS中的数据库操作:SQLite数据库,第三方封装库FMDB,CoreData
QF——iOS中数据持久化的几种方式的更多相关文章
- iOS中数据传值的几种方式
值传递:基本数据类型的变量之间的数据传递 //值传递不会改变变量的值 void func(int a) { a = ; } int main(int argc, const char * argv[] ...
- IOS开发中数据持久化的几种方法--NSUserDefaults
IOS开发中数据持久化的几种方法--NSUserDefaults IOS 开发中,经常会遇到需要把一些数据保存在本地的情况,那么这个时候我们有以下几种可以选择的方案: 一.使用NSUserDefaul ...
- PHP中数据类型转换的三种方式
PHP中数据类型转换的三种方式 PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有: 1.(int).(integer):转换成整形2.(float).(double).(real):转换成 ...
- iOS中 数据持久化 UI高级_17
数据持久化的本质就是把数据由内写到本地(硬盘中),在iOS指将数据写到沙盒文件夹下: 沙盒机制:指的就是采用沙盒文件夹的形式管理应用程序的本地文件,而且沙盒文件夹的名字是随机分配的,采用十六进制方法命 ...
- Redis数据持久化的两种方式RDB和AOF
由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁 盘上,当redis重启后,可以从磁盘中恢复数据.redis提 ...
- iOS中拉伸图片的几种方式
假如下面的一张图片,是用来做按钮的背景图片的,原始尺寸是(128 * 112) 按钮背景图片.png 我们通过代码将这张图片设置为按钮的背景图片,假如我们将创建好的按钮的宽高设置为:(W=200, H ...
- redis数据持久化的两种方式
1,AOF AOF持久化以日志的形式记录服务器所处理的每一个写.删除操作,查询操作不会记录,以文本的方式append记录,可以打开文件看到详细的操作记录.(相同数量的数据集而言,AOF文件通常要大于R ...
- 在.net core中数据操作的两种方式(Db first && Code first)
在开发过程中我们通常使用的是Db first这种模式,而在.net core 中推荐使用的却是 code first 反正我是很不习惯这种开发模式 于是就搜寻整个微软的官方文档,终于找到了有关.net ...
- iOS中延时执行的几种方式的比较和汇总
本文列举了四种延时执行某函数的方法及其一些区别.假如延时1秒时间执行下面的方法. - (void)delayMethod { NSLog(@"execute"); } 1.perf ...
随机推荐
- 再议Swift操作符重载
今天我们来谈一谈Swift中的操作 符重载,这一功能非常实用,但是也相当有风险.正所谓“能力越大责任越大”,这句话用来形容操作符重载最合适不过了.它可以令你的代码更加简洁,也可以让 一个函数调用变得又 ...
- Javascript自由拖拽类
基本拖拽配置 new Dragdrop({target 拖拽元素 HTMLElemnt 必选bridge 指定鼠标按下哪个元素时开始拖拽,实现模态对话框时用到 dragable 是否可拖拽 (true ...
- c#的数据类型、运算符
数据类型:整型:int short long byte小数:double float decimal布尔:bool字符:char 定义变量:数据类型 变量名 [= 值];变量名的命名规则:1.组成的字 ...
- ASP.NET打印EXCEl报表技术总结
序言:我们在做企业项目或者一些管理系统的时候往往会用到导出到excel报表这项功能,下面我介绍的是用windows自带的excel来打印 首先必须引入:Interop.Excel.dll.Intero ...
- Linux下安装jdk1.8
相信码农们绝对禁不住linux系统的诱惑,同样在linux的世界里少不了java,下面笔者就和大家分享一下我的jdk1.8安装过程吧,新接触linux的童鞋们完全可以按照我提供的图片中的命令来安装哦- ...
- Android输入法 监听事件
登录界面有一个输入用户名和密码的编辑框: private EditText et_userName;// 账户 private EditText et_password;// 密码 布局文件如下: & ...
- 修改已经提交到远端的git commit信息
有这么一种场景,就是以前没有设置用户名和邮箱,导致提交时git commit信息中用户信息不正确.这样的情况导致后来我们提交代码到git上面时因为身份验证错误,只有到 push 阶段了才发现提交不上去 ...
- windows下安装NodeJs
1.官网(//nodejs.org/en/)下载系统匹配的文件 2.双击安装,完成后发现nodejs文件夹下面有npm, 直接用npm安装其他环境既可 3.如果配置了环境变量,直接Win+R后CMD调 ...
- jQuery实现逐字输入效果
之前做了个测试小游戏(姑且叫游戏吧)为了增加神秘性,就想给她加个逐字输入效果:刚好在网上找到一个挺好用的,于是就发扬拿来主义:按照自己的喜好做了一丢丢的修改(勉强算是吧\( ̄︶ ̄)> ). 代码 ...
- QT5中QString与char *的相互转换
以例子说明: #include <QApplication> #include <QDebug> #include <QString> #include <Q ...