iOS中数据存储方式
2016-03-17 23:30
218 查看
首先我们来了解一下iOS中数据存储有哪些方式:
* XML属性列表(plist)归档
> plist全名是:Property List,属性列表文件。它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist,因此通常被称为plist文件。文件是xml格式的。它是以key-value的形式来存储数据。
> 可以用来存储用户设置,也可以用来存储一些需要经常用到而不经常改动的信息。
> plist只能存储系统自带的一些常规的类,
也就是有writeToFile方法的对象才可以使用plist保存数据。例如:NSString、NSDictionary、NSArray、NSData、
NSNumber等类型. -----重点是这种智能存储系统自带类
* Preference(偏好设置)
> 偏好设置本质也是 plist。
> 偏好设置是专门用来保存应用程序的配置信息,比如保存用户名、密码、字体大小、是否自动登录等小数据量信息。
> 一般情况不要在偏好设置中保存其他数据(比如图片数据,或者其他大文本数据)。如果利用系统的偏好设置来存储数据,默认就是存储在Preferences文件夹下面的,偏好设置会将所有的数据都保存到同一个文件中。------这里不要存储大文件.
* NSKeyedArchiver归档(NSCoding)
> NSKeyedArchiver功能非常强大,使用它类进行对象(包括自定义的对象)序列化和反序列化。
* 序列化简单的理解就是将对象保存到文件的过程。
* 反序列化就是将从文件中读取对象的过程。 -可以存储到任意路径..任意大小
* SQLite3 数据库
> 比较出名的数据库有 MySql/Oracle/DB2/SqlServer/...这些大型数据库是用在 pc
电脑上的,不是用在手机上的。手机上开发用的是嵌入式微型数据库,就是SQLite数据库。这里的3是指数据库已经发展到第3个版本了。
> 数据库存储数据
优点:相比上面几种方式,效率更高。里面封装了各种查询,插入,删除,更新数据等算法,速度非常快。
缺点:它是关系型数据库,不是对象型数据库。对象型数据库可以直接将一个对象存储到数据库中。关系型数据库则需要将对象进行解码,然后编写 sql语句来保存数据,比较蛋疼。
数据库一般是用来存储数据量比较大的项目中。
* Core Data
> 是苹果官方提供给开发者专门做数据持久化的框架。它是对SQLite3的封装,使用它不需要编写任何SQL语句就能够将OC对象转化成数据,保存在SQLite3数据库文件中,也能够将保存在数据库中的数据还原成OC对象。-------也是存储大数据的..
那么数据iOS将数据存储在哪里呢?
每个应用的沙盒目录都是相似的,主要包含下面4个目录:
1> 应用名称.app
①
存放内容:该目录包含了应用程序本身的数据,包括资源文件和可执行文件等。程序启动以后,会根据需要从该目录中动态加载代码或资源到内存,这里用到了lazy loading的思想。
②
整个目录是只读的 为了防止被篡改,应用在安装的时候会将该目录签名。非越狱情况下,该目录中内容是无法更改的;在越狱设备上如果更改了目录内容,对应的签名就会被改变,这种情况下苹果官网描述的后果是应用程序将无法启动。
③是否会被iTunes同步:否 -----应用程序本身的文件.不可窜改
2> Documents文件夹
①
存放内容:我们可以将应用程序的数据文件保存在该目录下。不过这些数据类型仅限于不可再生的数据。可再生的数据文件应该存放在Library/Cache目录下。
②
是否会被iTunes同步:是 ---不可再生
3> Library文件夹
3.1 > Library/Caches
①
存放内容:主要是缓存文件,用户使用过程中缓存都可以保存在这个目录中。那么这个目录就用于保存那些可再生的文件,比如网络请求的数据。鉴于此,应用程序通常还需要负责删除这些文件。
②
是否会被iTunes同步:否。-----缓存文件
9d4f
3.2 > Library/Preferences
①
存放内容:应用程序的偏好设置文件。我们使用NSUserDefaults写的设置数据都会保存到该目录下的一个plist文件中.
②
是否会被iTunes同步:是 ---偏好设置
4> tmp文件夹
①
存放内容:各种临时文件,保存应用再次启动时不需要的文件。而且,当应用不再需要这些文件时应该主动将其删除,因为该目录下的东西随时有可能被系统清理掉,目前已知的一种可能清理的原因是系统磁盘存储空间不足的时候。
②
是否会被iTunes同步:否 ---各种临时文件,定期删除.
下一篇上这几种的实现代码.....
* XML属性列表(plist)归档
> plist全名是:Property List,属性列表文件。它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist,因此通常被称为plist文件。文件是xml格式的。它是以key-value的形式来存储数据。
> 可以用来存储用户设置,也可以用来存储一些需要经常用到而不经常改动的信息。
> plist只能存储系统自带的一些常规的类,
也就是有writeToFile方法的对象才可以使用plist保存数据。例如:NSString、NSDictionary、NSArray、NSData、
NSNumber等类型. -----重点是这种智能存储系统自带类
* Preference(偏好设置)
> 偏好设置本质也是 plist。
> 偏好设置是专门用来保存应用程序的配置信息,比如保存用户名、密码、字体大小、是否自动登录等小数据量信息。
> 一般情况不要在偏好设置中保存其他数据(比如图片数据,或者其他大文本数据)。如果利用系统的偏好设置来存储数据,默认就是存储在Preferences文件夹下面的,偏好设置会将所有的数据都保存到同一个文件中。------这里不要存储大文件.
* NSKeyedArchiver归档(NSCoding)
> NSKeyedArchiver功能非常强大,使用它类进行对象(包括自定义的对象)序列化和反序列化。
* 序列化简单的理解就是将对象保存到文件的过程。
* 反序列化就是将从文件中读取对象的过程。 -可以存储到任意路径..任意大小
* SQLite3 数据库
> 比较出名的数据库有 MySql/Oracle/DB2/SqlServer/...这些大型数据库是用在 pc
电脑上的,不是用在手机上的。手机上开发用的是嵌入式微型数据库,就是SQLite数据库。这里的3是指数据库已经发展到第3个版本了。
> 数据库存储数据
优点:相比上面几种方式,效率更高。里面封装了各种查询,插入,删除,更新数据等算法,速度非常快。
缺点:它是关系型数据库,不是对象型数据库。对象型数据库可以直接将一个对象存储到数据库中。关系型数据库则需要将对象进行解码,然后编写 sql语句来保存数据,比较蛋疼。
数据库一般是用来存储数据量比较大的项目中。
* Core Data
> 是苹果官方提供给开发者专门做数据持久化的框架。它是对SQLite3的封装,使用它不需要编写任何SQL语句就能够将OC对象转化成数据,保存在SQLite3数据库文件中,也能够将保存在数据库中的数据还原成OC对象。-------也是存储大数据的..
那么数据iOS将数据存储在哪里呢?
每个应用的沙盒目录都是相似的,主要包含下面4个目录:
1> 应用名称.app
①
存放内容:该目录包含了应用程序本身的数据,包括资源文件和可执行文件等。程序启动以后,会根据需要从该目录中动态加载代码或资源到内存,这里用到了lazy loading的思想。
②
整个目录是只读的 为了防止被篡改,应用在安装的时候会将该目录签名。非越狱情况下,该目录中内容是无法更改的;在越狱设备上如果更改了目录内容,对应的签名就会被改变,这种情况下苹果官网描述的后果是应用程序将无法启动。
③是否会被iTunes同步:否 -----应用程序本身的文件.不可窜改
2> Documents文件夹
①
存放内容:我们可以将应用程序的数据文件保存在该目录下。不过这些数据类型仅限于不可再生的数据。可再生的数据文件应该存放在Library/Cache目录下。
②
是否会被iTunes同步:是 ---不可再生
3> Library文件夹
3.1 > Library/Caches
①
存放内容:主要是缓存文件,用户使用过程中缓存都可以保存在这个目录中。那么这个目录就用于保存那些可再生的文件,比如网络请求的数据。鉴于此,应用程序通常还需要负责删除这些文件。
②
是否会被iTunes同步:否。-----缓存文件
9d4f
3.2 > Library/Preferences
①
存放内容:应用程序的偏好设置文件。我们使用NSUserDefaults写的设置数据都会保存到该目录下的一个plist文件中.
②
是否会被iTunes同步:是 ---偏好设置
4> tmp文件夹
①
存放内容:各种临时文件,保存应用再次启动时不需要的文件。而且,当应用不再需要这些文件时应该主动将其删除,因为该目录下的东西随时有可能被系统清理掉,目前已知的一种可能清理的原因是系统磁盘存储空间不足的时候。
②
是否会被iTunes同步:否 ---各种临时文件,定期删除.
下一篇上这几种的实现代码.....
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- JSP/PHP基于Ajax的分页功能实现
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- Attrib 显示、设置或删除指派给文件或目录的只读、存档、系统以及隐藏属性
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解