数据存储 (IOS开发)

常见的数据存储方式:

  1. Plist格式文件存储: PropertList属性列表
  2. NSUserDefaults存储
  3. 解归档存储: NSKeyedArchiver归档 / NSKeyedUnarchiver解档
  4. 数据库:SQLite3,基于SQLite3的FMDB,CoreData

 

  1. Plist文件
  • Plist文件,即属性列表文件。
  • 可以存储的数据类型有:Array、Dictionary、String、Bool、Date、Data、Number。
  • 常用于存储用户的设置或存储项目中经常用到又不经常修改的数据。
  • plist 文件可以只用Xcode直接创建,也可以使用代码创建。
  • 不适合存储大量数据,而且只能存储基本数据类型。
  • 虽然也能实现增删改查等操作,但由于数据的存取必须是一次性全部操作,所以性能方面并不好
  1. NSUserDefaults沙盒存储(个人便好存储)
  • 应用程序启动后,会在沙盒路径Library->Preferences下默认生成与工程同名的plist文件,该方式存储的数据都将存入该文件当中。
  • 常用于存储个人便好设置。
  • 这种方式本质是操作plist文件,所以性能方面的考虑同plist数据存储。
  1. 解归档存储: NSKeyedArchiver归档 / NSKeyedUnarchiver解档

         归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上;程序运行过程中,或者重新打开程序时,可以通过  解归档(反序列化)还原这些对象。

  • plist 与 NSUserDefaults(个人偏好设置)两种类型的储存只适用于系统自带的一些常用类型,而且plist必须拿到文件路径,NSUserDefaults也只能储存应用的主要信息。
  • 对于开发中自定义的数据模型的储存,我们可以考虑使用归档储存方案。
  • 归档保存数据,文件格式自己可以任意,没有要求 ; 即便设置为常用的数据格式(如:.c .txt .plist 等)要么不能打开,要么打开之后乱码显示。
  • 值得注意的是使用归档保存的自定义模型需要实现NSCoding协议下的两个方法。
  • 不适合存储大量数据,可以存储自定义的数据模型。
  • 虽然归档可以存储自定义的数据结构,但在大批量处理数据时,性能上仍有所欠缺。相对 NSUserDefaults 来说,速度慢些,但是可以保存自定义类型的.
  1. 数据库:SQLite3,基于SQLite3的FMDB,CoreData

主流使用的DB框架有:

  • SQLite3 : SQLite是一款轻型的嵌入式数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就足够了。它的处理速度比Mysql、PostgreSQL这两款著名的数据库都还快。SQLite提供的是一些C函数接口,你可以用这些函数操作数据库。通过使用这些接口,传递一些标准 sql 语句(以 char * 类型)给SQLite函数,SQLite就会为你操作数据库。一个数据库中的表就算是一个文件,一般是将这个文件放在沙盒Document目录下,文件后缀名一般为db(database)
  • FMDB 正式基于 SQLite 开发的一套开源库。使用时,需要自己写一些简单的SQLite语句。

FMDB是基于OC语言对SQlite数据库使用的封装,具有对象化概念(注意这里的对象化概念不是说可以直接存储对象,是指OC语言的基本对象【NSInteger(integer)、浮点型(real)、NSString (text) 、 对象或其他(blol)】,实际数据库存储的类型只有小括号内的四中基本的。对于图片等其他类型的可以转化为二进制存储在数据库中。

  • CoreData 是苹果给出的一套基于 SQLite 的数据存储方案;而且不需要自己写任何SQLite语句。该功能依赖于CoreData.framework 框架,该框架已经很好地将数据库表和字段封装成了对象和属性,表之间的一对多、多对多关系则封装成了对象之间的包含关系。
  • SQLite.swift :非常好用的Swift封装的框架,轻量级。
  • WCDB.swift:是一个易用、高效、完整的移动数据库框架,它基于 SQLite 和 SQLCipher 开发。它是腾讯开发的,微信app中使用的框架。

 

【基础概念】

  1. 沙盒:其实质就是在iOS系统下,每个应用在内存中所对应的存储空间。
  • 每个iOS应用都有应用沙盒(文件系统目录),与其他文件系统隔离;
  • 每个沙盒之间相互隔离,而且不能相互访问(越狱例外)
  • 各个应用的沙盒是相互独立的,在系统内存消耗过高时,系统会收到内存警告并自动将一些应用退出。这就保证了系统的数据的安全性及稳定性。

 

  1. 沙盒目录
  • Documents:应用程序在运行时生成的一些需要长久保存的数据。这个目录用于存储用户数据或其它应该定期备份的信息。
  • Library:

Library—>Caches:存储应用程序网络请求的数据信息(音视频/图片等的缓存)。此目录下的数据不会自动删除,需要手动清除数据。主要用于保存应用在运行时生成的需要长期使用的数据,一般用于存储体积较大数据

Library—>Preferences:设置应用的一些功能会在该目录中查找相应设置的信息,该目录由系统自动管理,通常用来存储一些基本应用配置信息,例如账号密码,自动登录等。(应用中用NSUserDefaults保存的数据,就在该目录里与应用同名的plist文件中)

  • tmp: 保存应用运行时产生的一些临时数据;应用程序退出、系统空间不够、手机重启等情况下都会自动清除该目录的数据。
  • SystemData 系统产生的缓存

 

推荐:https://blog.csdn.net/kyl282889543/article/details/100198041

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值