在学习本地数据存取的时候我们首先介绍一下iOS中的一个存储介质应用沙盒。每个iOS的应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离。应用必须待在自己的沙盒里,其他应用不能访问该沙盒。应用沙盒结构分析:
1、应用程序包:包含所有的资源文件和可执行文件
2、Documents:保存应用运行时生成需要持久化的数据,iTunes同步设备时会备份该目录。例如:游戏应用可将游戏存档保存在该目录。
3、tmp:保存应用运行时所需的临时数据,使用完毕后,再讲相应的文件从该目录删除。应用没有运行时,系统可能会消除该目录下的文件,iTunes同步设备是不会备份该目录。
4、Library/Caches:保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积大、不需要备份的非重要的数据
5、Library/Preference:保存应用的偏好设置,iOS的Setting应用会在该目录中查找应用的设置信息。iTunes同步设备时备份该目录。
•应用的沙盒目录的常见的获取方式
•获取沙盒路径:NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
iOS应用数据存储的常用方式
1、XML属性列表(plist)归档
2、偏好设置(Preference)
3、NSCoding
4、SQLite3
5、Core Date
XML属性列表(plist)归档
•属性列表是一种XML格式,拓展名为plist
•如果对象是一些OC对象,就可以使用wirteToFile:atomically:方法直接将对象写到属性列表文件中,使用这个方法可以用来获取文件的沙盒
下面使用归档将数据写成plist文件如图所示:
偏好设置(Preference)
•很多iOS应用都支持偏好设置,比如登录保存用户名、密码,iOS提供了一套标准的解决方案来用用加入偏好设置功能不能
•每个应用都有NSUserverDefaults实例,通过它来存取偏好设置
NSCoding(归档)
•对象如果是OC队形可以直接使用NSKeyedArchiver进行归档和恢复(不是所有的OC对象都能使用NSKeyedArchiver)
这种方式来进行归档和接档操作的只有遵守NSCoding协议的对象才可以使用NSKeyedArchiver来进行解档和归档