<强> iOS应用数据存储的常用方式强>
-
<李> XML属性列表(plist)归档李>
<李>首选项(偏好设置)李>
<李> NSKeyedArchiver归档(NSCoding) 李>
<李> SQLite3李>
<李> 李>核心数据
1。XML属性列表(plist)归档
每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离。应用必须待在自己的沙盒里,其他应用不能访问该沙盒。
<强>应用沙盒结构分析:强>
<强>应用程序包强>:包含了所有的资源文件和可执行文件
<强>文件强>:保存应用运行时生成的需要<强>持久化>强劲的数据,iTunes同步设备时<强>会备份强>该目录,例如,游戏应用可将游戏存档保存在该目录
<强> tmp 强>:保存应用运行时所需的<强>临时强>数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件.iTunes同步设备时<强>不会备份强>该目录
<强>图书馆/缓存强>:保存应用运行时生成的<强>需要持久化>强劲的数据,iTunes同步设备时<强>不会备份强>该目录。一般存储体积大,不需要备份的非重要数据
<强>图书馆/偏好强>:保存应用的所有<强>偏好设置>强,iOS的设置(设置)应用会在该目录中查找应用的设置信息.iTunes同步设备时<强>会备份强>该目录
<强>应用沙盒目录的常见获取方式强>
沙盒根目录:NSString *家=NSHomeDirectory (); 文档:(2种方式) 1. 利用沙盒根目录拼接“文档”字符串//不建议采用,因为新版本的操作系统可能会修改目录名 NSString *家=NSHomeDirectory (); NSString *文件=(家庭stringByAppendingPathComponent: @“文档”); 2. 利用NSSearchPathForDirectoriesInDomains函数//NSUserDomainMask代表从用户文件夹下找//是的代表展开路径中的波浪字符“~” NSArray *数组=NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask);//在iOS中,只有一个目录跟传入的参数匹配,所以这个集合里面只有一个元素 NSString *文件=(数组,objectAtIndex: 0); tmp: NSString * tmp=NSTemporaryDirectory (); 库/缓存: 跟文档类似的2种方法: 1. 利用沙盒根目录拼接“缓存”字符串 2. 利用NSSearchPathForDirectoriesInDomains函数(将函数的第2个参数改为:NSCachesDirectory即可) 库/偏好: 通过NSUserDefaults类存取该目录下的设置信息
<强>属性列表强>
属性列表是一种XML格式的文件,拓展名为plist
如果对象是NSString, NSDictionary, NSArray, NSData, NSNumber等类型,就可以使用writeToFile:自动:方法直接将对象写到属性列表文件中
引用>如:<强>将一个NSDictionary对象归档到一个plist属性列表中强>
//获取路径 NSString *路径=NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask,是的)[0]; 路径=[路径stringByAppendingPathComponent: @“save.plist”);//将数据封装成字典//不能存储对象 称为unaryoperations * dict=(称为unaryoperations字典); [dict setObject: @”小黄”forKey: @“name”); [dict setObject: @“12345678”forKey: @“手机”); [dict setObject: @“24”forKey: @“时代”);//将字典持久化到文件/save.plist文件中 (dict writeToFile:路径自动:是的),
<>强恢复NSDictionary 强>
读取属性列表,恢复NSDictionary对象//读/save.plist取文件的内容,实例化NSDictionary NSDictionary * dict=[NSDictionary dictionaryWithContentsOfFile路径):; NSLog(@”名称:% @”,[dict objectForKey: @“name”]); NSLog(@“电话:% @”,[dict objectForKey: @ "电话"]); NSLog(@“年龄:% @”,[dict objectForKey: @ "年龄"]);* * NSDictionary - (writeToFile:自动)——比;保存。plist
(属性列表文件)* *<强> save.plist(属性列表文件)- (dictionaryWithContentsOfFile:)→NSDictionary 强>
引用>2。偏好(偏好设置)
很多iOS应用都支持偏好设置,比如保存用户名:密码,字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能
IOS数据存储详解及实例代码