很早以前就想总结一下iOS数据存储的相关知识,今天得空总结如下:
iOS常用的存储方式
1、偏好设置Preference
2、Plist存储
3、归档,解档
4、SQLite
5、CoreData
6、三方数据存储框架
应用沙盒
1、应用沙盒就是文件系统目录,与其他文件系统隔离
![](https://img.haomeiwen.com/i4992917/81232dce75e3f010.png)
3、获取沙盒路径:
![](https://img.haomeiwen.com/i4992917/1e1162af8bf77a8b.png)
偏好设置
1、偏好设置即NSUserDefault、数据沙盒中的Library/Preference
2、存储轻量级的本地数据,一般用于保存应用的配置信息等
3、支持的类型:NSNumber,NSString,NSDate、NSArray、NSDictionary、BOOL、NSData
4、保存的数据和取出的数据均为不可变的、以键值对的形式存取
![](https://img.haomeiwen.com/i4992917/322af23695f291c4.png)
![](https://img.haomeiwen.com/i4992917/20a1869ad9321a74.png)
Plist存储
1、存储数组、字典,不能存储自定义的对象
![](https://img.haomeiwen.com/i4992917/8fa927ce5847b9de.png)
![](https://img.haomeiwen.com/i4992917/55727a078fc3e4ec.png)
3、存储方式:
![](https://img.haomeiwen.com/i4992917/48809a950f0ef493.png)
![](https://img.haomeiwen.com/i4992917/6bb165eb347ce411.png)
4、取出方式:
![](https://img.haomeiwen.com/i4992917/709aaa45edb9bfd0.png)
归档、解档
1、可存储自定义的对象、文件和对象属性
![](https://img.haomeiwen.com/i4992917/ec1257724e13f555.png)
3、解档方式(辅助类):
![](https://img.haomeiwen.com/i4992917/8cea34e30ddf47ed.png)
4、需遵循NSCoding协议:
![](https://img.haomeiwen.com/i4992917/af2267387f46d6ec.png)
YYModel
1、YYModelGitHub地址
2、YYModel中封装了归档、解档的相关方法,可直接使用
3、完成自定义对象类型和基础数据类型的转化
3、为NSArray、NSDictionary、NSObject等添加分类方法
SQLite数据库
1、添加libsqlite3.0.tbd![](https://img.haomeiwen.com/i4992917/363b4f4653531ecc.png)
2、引入头文件
![](https://img.haomeiwen.com/i4992917/bc4223eeb4d66822.png)
3、定义数据库:static sqlite3 *db;
4、打开数据库:sqlite3_open([strPath UTF8String], &db)
5、创建表格(create table User),增(insert into User),删(delete from User),修(update User)
![](https://img.haomeiwen.com/i4992917/88af485d7d610731.png)
6、查询(select * from User):
![](https://img.haomeiwen.com/i4992917/40390ec8b1ee15ab.png)
7、关闭数据库:sqlite3_close(db)
CoreData
1、创建模型文件(系统创建、手动创建):![](https://img.haomeiwen.com/i4992917/18a42797445a467f.png)
2、创建实体及相关属性:
![](https://img.haomeiwen.com/i4992917/fc3622583163c0b4.png)
![](https://img.haomeiwen.com/i4992917/1ddf98b7445f7d3b.png)
3、创建实体类:
![](https://img.haomeiwen.com/i4992917/af1f50ea8bcefb50.png)
![](https://img.haomeiwen.com/i4992917/c2c3bedaf8de6ff3.png)
4、生成上下文、关联数据库:
![](https://img.haomeiwen.com/i4992917/f96ffba0f75b140a.png)
5、NSManagedObjectModel:以模型路径初始化(.momd)
6、NSPersistentStoreCoordinator(持久化存储助理:数据库):以model初始化,添加数据库路径和类型
7、NSManagedObjectContext:上下文,保存信息,对数据库进行操作,并关联持久化助理(store)
8、iOS10以后,统一为NSPersistentContainer,可用点语法获取上述所有属性
9、写入数据:
![](https://img.haomeiwen.com/i4992917/db9c937186fcd342.png)
10、删除、查询、修改:
![](https://img.haomeiwen.com/i4992917/a9863793ce8cdf02.png)
11、排序:
![](https://img.haomeiwen.com/i4992917/e800d703a73e3ded.png)
12、NSManagedObjectContext save保存
三方FMDB
1、GitHub链接
2、一个FMDB对象即为一个数据库
3、不用考虑线程的问题
4、添加事务,捕获异常回滚等
5、相关操作
KeyChain钥匙链
1、安全存储
2、security安全框架
3、secItem来增删查改
参考:
iOS本地数据持久化
网友评论