OC 数据持久化

NSCoder

使用NSCoder时Model要遵循NSCoding协议,同时也要实现encodeWithCoderinitWithCoder方法。

NSCoder会将Model中的数据转换为键值对形式的数据并写入指定的文档。通过encodeWithCoder进行归档。initWithCoder进行解档。

按照规定,编码某个属性时要使用的键就是该属性的名称。

XIB文件也是居于固化机制的。

应用沙盒

就是文件系统的目录

应用沙盒所包含的目录:

  • 应用程序包(application bundle)

可执行的文件和所有资源文件。

此目录中的文件都是只读的,不能修改。此外也不能在运行时向application bundle中添加文件。application bundle中的文件通常包括:pathForResourec:ofType:方法。

  • Documents/

运行时生成的并且需要保留的数据。iTunes或iCloud会在备份该文件。

  • Library/Caches/

与Documents目录相同,不同的是他不会被iTunes或iCloud备份该文件。

  • Library/Preferences/

存放所有的偏好设置,可理解为相当配置文件,iOS中的设置(setting)应用也会在该目录中查找应用的设置信息。

-tmp/

存放设备运行时的临时数据。

获取文件目录

//第一个参数时NSSearchPathDirectory类型常量,负责指定目录的类型
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

NSSearchPathForDirectoriesInDomains返值是一个数组,是因为在Mac OS中可能会有多个值,但是在iOS中只会有一个值。

获取应用程序包目录(Application Bundle)

//获取应用程序包的目录
NSBundle *bd = [NSBundle mainBundle]; 
//在应用程序包中查找test.jpeg文件的全路径
NSString *path = [bd pathForResource:@"test" ofType:@"jpeg"];

应用状态与状态转换

OC 数据持久化_第1张图片
应用状态转换图
OC 数据持久化_第2张图片
应用状态

NSData

//向指定的路径中写入数据
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;

你可能感兴趣的:(OC 数据持久化)