本篇对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种数据持久化方法对比的更多相关文章

  1. 基于 abp vNext 和 .NET Core 开发博客项目 - 终结篇之发布项目

    系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 ...

  2. 数据可视化之PowerQuery篇(二)这个方法帮你快速计算列

    https://zhuanlan.zhihu.com/p/81846862 PowerQuery中,对两列或者多列的计算一般通过添加自定义列来实现,以下表为例, 如果需要1月和2月数据的合计,可以添加 ...

  3. 深入理解iPhone数据持久化(手把手教你iphone开发 – 基础篇)

    在所有的移动开发平台数据持久化都是很重要的部分:在j2me中是rms或保存在应用程序的目录中,在symbian中可以保存在相应的磁盘目录中和数据库中.symbian中因为权限认证的原因,在3rd上大多 ...

  4. iphone开发中数据持久化之——嵌入式SQLite(三)

    前两篇分别讨论了使用属性列表的数据持久化.使用对象归档的数据持久化,本文将讨论第三个实现数据持久化的方法---嵌入式SQL数据库SQLite3.SQLite3在存储和检索大量数据方面非常有效.它还能够 ...

  5. iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)

    iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存 ...

  6. iOS开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】

                   在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运 ...

  7. iOS开发中的4种数据持久化方式【一、属性列表与归档解档】

    iOS中的永久存储,也就是在关机重新启动设备,或者关闭应用时,不会丢失数据.在实际开发应用时,往往需要持久存储数据的,这样用户才能在对应用进行操作后,再次启动能看到自己更改的结果与痕迹.ios开发中, ...

  8. IOS开发数据存储篇—IOS中的几种数据存储方式

    IOS开发数据存储篇—IOS中的几种数据存储方式 发表于2016/4/5 21:02:09  421人阅读 分类: 数据存储 在项目开发当中,我们经常会对一些数据进行本地缓存处理.离线缓存的数据一般都 ...

  9. iOS开发UI篇—ios应用数据存储方式(偏好设置)

    iOS开发UI篇—ios应用数据存储方式(偏好设置) 一.简单介绍 很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能 每个应用 ...

随机推荐

  1. 如何判断一个C++对象是否在堆栈上(通过VirtualQuery这个API来获取堆栈的起始地址,然后就可以得到答案了),附许多精彩评论

      昨天有人在QQ群里问到如何判断一个C++对象是否在堆栈上, 我在网上搜索了下, 搜到这个么一个CSDN的帖子http://topic.csdn.net/t/20060124/10/4532966. ...

  2. .sdp文件格式介绍

    最近做RTSP流播放,需要了解.sdp这种会话描述的文件格式,当然,里面的具体语法有SDP解析器来分析.但是我需要大概了解一些字段的意思,它是文本描述的,采用key value的形式描述. https ...

  3. LINK : fatal error LNK1000: Internal error during IncrBuildImage

    一.下微软的补丁:KB948127补丁来解决,http://code.msdn.microsoft.com/KB948127.貌似安装了也不起作用二.如果下载的补丁没安装成功或下载失败,可以用下面的方 ...

  4. MSSQL 生成有意义的PROC

    MSSQL 生成有意义的PROC --MSSQL  用PROC 生成有意义的单号:如WP200011101 GO/****** 对象:  Table [dbo].[tbl_SequenceNum]   ...

  5. java与数据结构(2)---java实现静态链表

    结点类 1 //结点类 2 class Node<T> { 3 private T data; 4 private int cursor; 5 6 Node(T data, int cur ...

  6. Xshell远程连接Ubuntu

    在Ubuntu系统下执行命令: sudo apt-get install openssh-server 然后,在Xshell中新建会话,输入Ubuntu系统的IP,以及用户名.密码. 但是经常会出现连 ...

  7. zabbix流量汇聚

    "服务器流量汇总"领导提需求,要把几个数据中心的数据汇总起来,于是就google了一下"zabbix流量汇总" 按照其中一篇博客做了出来,博客地址如下. htt ...

  8. Node.js中的URL

    Node.js中的URL 什么是URL URL是Uniform Location Resource的缩写,翻译为"统一资源定位符",也就是描述资源位置的固定表示方法.被URL描述的 ...

  9. 强制转https

    原文:http://blog.csdn.net/wzy_1988/article/details/8549290 需求简介 基于nginx搭建了一个https访问的虚拟主机,监听的域名是test.co ...

  10. .net打包/c#winfrom程序打包

    1:新建安装部署项目 打开VS,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),然后点击确定.(详细见下图) 此主题相关图片如下: 2:安装向导 关闭后打开安 ...