iPhone开发 数据持久化总结(终结篇)—5种数据持久化方法对比
本篇对IOS中常用的5种数据持久化方法进行简单对比总结
第1种:UserDefaults(iPhone开发【二十】数据持久化总结之第1篇—NSUserDefaults)
1)易用性很强
2)数据存储在.plist文件中
3)一般保存 配置信息,首选项信息、缓存数据等,适用存储较少量数据的情况
4)缺点:无法将自定义对象序列化到属性列表中
第2种:属性列表(iPhone开发【二十一】数据持久化总结之第2篇—属性文件(.plist))
1)易用性较强
2)数据存储在.plist文件中
3)一般用于存储少量数据,也不适合操作处理大量数据
4)缺点:无法将自定义对象序列化到属性列表中
这种方法与第1种非常相像,首选项信息、缓存数据等一般用第1种,其它情况一般用第二种方法。
第3种:归档(iPhone开发【二十二】数据持久化总结之第3篇—归档(NSKeyedArchiver、NSKeyedUnarchiver))
1)易用性较强
2)数据存储archive文件中
3)一般用于存储少量数据
4)最大的优点是:可以将复杂的对象写入文件 可以归档集合类,所以无论添加多少对象,将对象写入磁盘的方式都是一样的,不会增加工作量;
而如果用第2种方法的属性列表一则无法保存复杂对象,二则工作量会随着对象的增加而加大
第4种:sqlite3(iPhone开发【二十四】数据持久化总结之第4篇—sqlite3数据库)
1)IOS 相关api都是C语言接口,且设计的易用性不强
2)数据存储在.db3(或sqlite3)数据库中,
3)可以存储大量数据,存储、检索大量数据非常高效;
开源的嵌入式数据库,ACID事务,
能对数据进行复杂的聚合,比使用对象执行这些操作要高效得多。
轻量级,跨平台,占用资源非常低,无网络服务器,只提供数据库级别的锁定,无用户账户概念。
SQLite的API不区分当前操作的数据库是在内存还是在文件。
缺点:
1. 并发访问的锁机制
SQLite在并发(包括多进程和多线程)读写方面的性能不太理想。数据库可能会被写操作独占,从而导致其它读写操作阻塞或出错;
2. SQL标准支持不全
如不支持外键约束;
PS:封装sqlite3操作的两个常用框架BNRPersistence
fmdb(更面向对象,省去麻烦冗余的C代码,比coredata更轻量级,提供多线程安全的数据库操作,有效防止数据库混乱)
三个核心类:FMDatabase :一个对象代表一个单独的数据库
FMResultSet :查询后的结果集
FMDatebaseQueue:线程安全的执行多个查询或更新
缺点:不支持多线程同时使用同一个数据库连接操作。
第5种:CoreData(iPhone开发【二十六】数据持久化总结之第5篇—CoreData技术)
类似java中的Hibernate
1)个人感觉易用性不强
2)数据存储可以选择sqlite,xml,plist或是其他方式作为持久化方案,一般使用sqlite
3)优点:实现的功能包括redo,undo,数据验证等
iPhone开发 数据持久化总结(终结篇)—5种数据持久化方法对比的更多相关文章
- 基于 abp vNext 和 .NET Core 开发博客项目 - 终结篇之发布项目
系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 ...
- 数据可视化之PowerQuery篇(二)这个方法帮你快速计算列
https://zhuanlan.zhihu.com/p/81846862 PowerQuery中,对两列或者多列的计算一般通过添加自定义列来实现,以下表为例, 如果需要1月和2月数据的合计,可以添加 ...
- 深入理解iPhone数据持久化(手把手教你iphone开发 – 基础篇)
在所有的移动开发平台数据持久化都是很重要的部分:在j2me中是rms或保存在应用程序的目录中,在symbian中可以保存在相应的磁盘目录中和数据库中.symbian中因为权限认证的原因,在3rd上大多 ...
- iphone开发中数据持久化之——嵌入式SQLite(三)
前两篇分别讨论了使用属性列表的数据持久化.使用对象归档的数据持久化,本文将讨论第三个实现数据持久化的方法---嵌入式SQL数据库SQLite3.SQLite3在存储和检索大量数据方面非常有效.它还能够 ...
- iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)
iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存 ...
- iOS开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】
在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运 ...
- iOS开发中的4种数据持久化方式【一、属性列表与归档解档】
iOS中的永久存储,也就是在关机重新启动设备,或者关闭应用时,不会丢失数据.在实际开发应用时,往往需要持久存储数据的,这样用户才能在对应用进行操作后,再次启动能看到自己更改的结果与痕迹.ios开发中, ...
- IOS开发数据存储篇—IOS中的几种数据存储方式
IOS开发数据存储篇—IOS中的几种数据存储方式 发表于2016/4/5 21:02:09 421人阅读 分类: 数据存储 在项目开发当中,我们经常会对一些数据进行本地缓存处理.离线缓存的数据一般都 ...
- iOS开发UI篇—ios应用数据存储方式(偏好设置)
iOS开发UI篇—ios应用数据存储方式(偏好设置) 一.简单介绍 很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能 每个应用 ...
随机推荐
- MCS-51单片机内部结构
8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解. 8051单片机包含中央处理器.程序存储器(ROM).数据存储器(RAM).定时/计数器.并行接口.串行接口和中断系统 ...
- 使用ntfs的磁盘映射功能
当年95极受欢迎,是作为一个还算真正的32位系统.之前的3.1都是16位为基础的,很多api支持有限.相应的对于硬件性能的发掘还是值得肯定的 98对于95的取代是成功的,我想重要原因是图形尤其是游戏的 ...
- 优秀的VeriSign和混蛋的GlobalSign
由于领导不懂行,直接购买了GlobalSign的证书,结果引起了我这个开发人员痛苦的2星期之旅,说说大体情况: 目的:对买来的一个驱动程序进行签名,使之能够在Win x64情况下安装和使用 下载Win ...
- BZOJ3296: [USACO2011 Open] Learning Languages
3296: [USACO2011 Open] Learning Languages Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 81 Solved: ...
- USACO6.4-Wisconsin Squares:搜索
Wisconsin Squares It's spring in Wisconsin and time to move the yearling calves to the yearling past ...
- html基础知识总结2
下拉列表,文本域,复选框 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- 个性化品牌开始繁荣?为设计师和代工厂牵线的平台Maker's Row获得100万美元融资 | 36氪
个性化品牌开始繁荣?为设计师和代工厂牵线的平台Maker's Row获得100万美元融资 | 36氪 个性化品牌开始繁荣?为设计师和代工厂牵线的平台Maker's Row获得100万美元融资
- 如何解决ajax跨域问题
如何解决ajax跨域问题(转) 由 于此前很少写前端的代码(哈哈,不合格的程序员啊),最近项目中用到json作为系统间交互的手段,自然就伴随着众多ajax请求,随之而来的就是要解决 ajax的跨域问题 ...
- 从此走上一条iOS程序猿不归路。。。
新的城市,新的生活!前不久刚刚结束了苦逼的面试找工作之旅,期间也小有收货,如今正处年底工作闲暇之余,将前一阵子陆陆续续的总结整理了一下,本人菜鸟程序猿一只,水平有限,本文总结的知识不算深入,比较浅显, ...
- iOS- UITableView could not hold the selected row after reload
I like stackoverflow.. Answer : http://stackoverflow.com/questions/6649202/uitableview-doesnt-keep-r ...