ios的文件管理有1.属性列表2.归档3.数据库(SQLite)4.coreData4种方式
属性列表Plist
IPA的存储空间
沙盒 Sandbox :读可写
|
|
应用程序文件 Bundle :只读
|
|
手动创建plist文件
info.Plist
系统plist文件
通过对应的key获取info.plist中的信息
如版本号versio
|
|
配置一个自定义plist
- 首次运行时,需要有一个默认的配置文件plist(模板,通常是bundle中的plist)
- 因为用户要能够修改配置,bundle中的文件是只读, 所以要把bundle中的模板写到Documents文件夹下
流程
- 创建一个模板(plist)
- 运行时检查是否复制过模板到Documents下,没复制过 就复制一份
- 设置页面显示时,读取Documents目录下的模板,把相关设置显示在界面上
- 当用户更改设置时,同步修改对应模板
系统自动创建plist:NSUserDefaults
- 本质上就是一个plist文不过是系统提供的.
- 存储的位置在沙盒(SandBox) ~/Library/Preferences/
只有当我们添加过值(setObject)以后,这个文件才会自动生成12NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];[userDefaults setObject:@"小明" forKey:@"name"];
额外的提供了向系统plist中存非对象类型的方法12[userDefaults setInteger:12 forKey:@"age"];[userDefaults setBool:YES forKey:@"Marry"];
文件的写入,是在每个runloop时进行,我们可以手动调用保存的方法,防止系统以外崩溃而导致没有存储的情况发生1[userDefaults synchronize];
归档Archive
归档/解档 : 压缩+解压缩
把对象类型存到磁盘中的统一解决方案
被归档对象需要遵循 NSCoding协议
通过协议方法对被归档对象编码解码
对被归档对象编码
[aCoder encodeObject:self.name forKey:@”name”];
对被归档对象解码
self.name = [aDecoder decodeObjectForKey:@”name”];
归档操作
archiveRootObject
|
|
解档操作
unarchiveObjectWithFile
|
|
RUNTIME类简化对象归档时的编码解码操作
|
|
示例:将运用runtime的编码解码代码做成宏定义
|
|