本篇对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. RUBY的类封装,继承,多态简单演示

    class Person def initialize(name,age=18) @name=name @age=age @motherland="China" end def t ...

  2. LeetCode_Decode Ways

    A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...

  3. Java正则表达式的语法与示例

    Java正则表达式的语法与示例 java 正则表达式 正则表达式语法 java正则表达式语法 java正则表达式 概要: Java正则表达式的语法与示例 | |目录 1匹配验证-验证Email是否正确 ...

  4. BZOJ3392: [Usaco2005 Feb]Part Acquisition 交易

    3392: [Usaco2005 Feb]Part Acquisition 交易 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 26  Solved:  ...

  5. Linux企业级项目实践之网络爬虫(26)——线程池

    一旦有一个抓取请求开始,就创建一个新的线程,由该线程执行任务,任务执行完毕之后,线程就退出.这就是"即时创建,即时销毁"的策略.尽管与创建进程相比,创建线程的时间已经大大的缩短,但 ...

  6. C++中使用stringstream进行类型转换操作

    stringstream包括istringstream和ostringstream,提供读写string的功能,使用时需包含stream文件.4个操作:1. stringstream strm; 创建 ...

  7. Storm拓扑的并行度(parallelism)介绍

    Storm拓扑的并行度(parallelism)介绍 1.Storm分为3个主要实体,用于在Storm集群中运行拓扑        工作进程:Worker Process,也称为Worker      ...

  8. [C++]memcpy 小记

    #include <stdio.h> #include <stdlib.h> #include <string.h> int main () { char a = ...

  9. tcp/ip连接

    1.TCP先连接(三次握手) client -> server : SYN a server -> client :SYN b, ack a+1 client -> server a ...

  10. asdasd

    adasdasd asdasd asdasd asd