--->梳理一下知识点,比较粗糙,如果有认知上的错误非常欢迎指出。
iOS数据持久化有4种方法:普通的文件、SQLite、plist、归档。(本质都是磁盘上的文件)
1. SQLite:
也是一种保存在磁盘上的格式化的文件,好处在于查找、存储方便。不像归档,必须每次全部解当,然后再一次性归档。
2. File:
不存在文件格式,就是数据流,无法进行查找、删除等操作。通过NSFileHandle类配合NSFileManager类实现文件的读写操作。
3. plist:
是一种特殊的xml文件格式,特殊在存储数据的标签固定,不能自定义标签。但是有个好处是,在iOS中plist文件读取非常方便。普通的xml文件还要自己建立数据模型去解析。plist文件的读写:只要知道了根部的数据结构,和路径,读写非常方便。
NSUserDefaults:苹果官方定义的类,实现对特定目录下plist文件的操作。该plist中一般存储用户的一些偏好设置、或者一些其他的信息 (用户名、密码、是否第一次启动等信息)。NSUserDefaults管理的plist文件是一个特殊的plist文件,它的根是个字典、plist文件目录以及名字用户都不能去修改,只能读写文件内容。
4. 归档:
自定义的对象是没法用plist存储的,必须将对象的每一项分开存储,但是这样有个问题就是破坏了数据之间本来的关系。这个时候可以用归档存储数据,自定义的数据模型必须遵循NSCoding协议,实现相关方法。归档还可以实现对象的深度拷贝。
数据传输两大格式:xml、json
1. XML:
各种平台无关性、语言无关性。基本有两种解析方法,只是实现方法不同而已.
(1) DOM:(Document Object Model),将xml数据读到内存中,保存文档的树结构,可以随机访问文档中任意节点,不好的地方是对内存消耗比较大。iOS下DOM又有两种情况,一种是指定绝对的路径一层层去访问,有google的第三方库GDataXMLNode,还有一种叫做xPath的方法。
(2) SAX:(Simple APIs for XML),苹果官方提供了NSXMLParser类进行解析。用协议代理实现,可以读一行解析一行,对内存消耗少,时间驱动型的。但是不能随机读取,选用哪种方法这要看需求。
2. JSON:
iOS中官方提供了NSJSONSerialization类,参见官方文档。