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 ...
随机推荐
- bootstrap之Swipe
Swipe 我定义为滑动,但它字面的意思又不是,事件的形式类似于小时候拿着一块石头片,朝水面飞过去,假设你手法能够那么就是swipe走的路线,假设你手法不行,接触水面的时候就没再飞起来那就会被人嘲笑的 ...
- Parallels destop8 无法创建bootcamp虚拟机
创建基于Boot Camp的虚拟机时弹出“PRL_ERR_DISK_FILE_OPEN_ERROR (0x80021014)”错误提示,由于Mac系统权限错误或Boot Camp内Windows系统权 ...
- asp.net 一个简单的登录控制
如果说一个网站需要用户登录后才能浏览,那么用户登录控制就不可避免.但是对于几百个以上的页面,不可能每个页面都做一次登录验证.因此,这需要在母版页中进行登录控制,这样就可以使得每一个使用这个母版页的子页 ...
- c#中的数据类型简介
一.C#中的变量和常量 C#中用于定义常量的方式有两种一个使用const关键字,一个是用readonly关键字.使用const定义的常量叫静态常量(compile-time constant),用re ...
- int指令(软件中断指令)
INT(软件中断指令)是CALL指令的一种特殊形式.call指令调用调用的子程序是用户程序的一部分,而INT指令调用的操作系统提供的子程序或者其他特殊的子程序. 中断服务子程序和标准过程的最大区别是 ...
- HDU1789(Doing Homework again)题解
HDU1789(Doing Homework again)题解 以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定任务分数和其截止日期,每日可完成一任务,输出当罚分尽可能小时 ...
- JSP(二)
JSTL JSTL不仅可以实现EL所不能实现的逻辑循环或者条件判断,还有强大的定制标记. 使用JSTL 需要将两个文件("jstl.jar"和"standard.jar& ...
- DBubtil的使用
1.什么是O-R Mapping(对象-关系映射) 常用O-R Mapping映射工具 Hibernate(全自动框架) Ibatis(半自动框架/SQL) Commons DbUti ls(只是对J ...
- 商品列表中显示类别名称而不是类别ID
商品表中的字段包裹商品信息和categoryid 若要在商品列表中显示出categoryname,有两种做法: 第一种做法: 拿到categoryid后再跟数据库连接一下,然后拿出categoryna ...
- 【Chromium中文文档】沙箱FAQ
沙箱FAQ 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Sandbox ...