iOS中的数据持久化,归档和反归档

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    

    //打印当前应用程序的沙盒路径

    NSLog(@"%@", NSHomeDirectory());

    

    //沙盒:在一定范围内可以随意做任何事

    

    //iOS程序的沙盒指的就是应用程序的文件操作文件夹, 在文件夹内可以读写任何内容, 但是完全不能访问其他应用程序的沙盒文件夹

    

    //Documents:跟用户相关的一些文件, 用户设置的对这个app的偏好设置. 用户的一些文本信息. 最好不要存储空间占用比较大的文件比如视频/音频等等

    

    //Library:给开发者使用的, 用来存储一些东西的文件夹

    

    //Caches:缓存文件夹, 用户看过的一些图片, 音频, 视频, 都可以存储在这个文件夹中.一般的app, 清除缓存意思就是清除这个文件夹的所有内容

    

    //Preferences: 给开发者存储一些内容, NSUserDefaults保存的信息都在这个文件夹中

    

    //    [[NSUserDefaults standardUserDefaults] setObject:@"" forKey:<#(NSString *)#>]

    

    //tmp:临时文件夹, 存储网络请求过程中的一些临时文件. app版本更新的时候, 会直接清空tmp文件夹.


    //简单对象写入本地

    

    //NSString, NSNumber, NSDictionary, NSArray, NSData;

    

    //1.拼接一个存储路径

    

    //系统提供了一个函数, 可以直接返回某一个沙盒文件夹的路径

    

    //返回值: 找到的路径组成的数组, 如果搜索的是系统的沙盒文件夹路径, 数组中只有一个元素.

    

    //参数1:搜索沙盒中的哪个文件夹

    //参数2:搜索的范围

    //参数3:返回的是相对路径还是绝对路径

    NSArray *arr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    

    NSLog(@"%@", arr);

    

    //获取文件路径

    

    //取出documents文件夹的路径

    NSString *docPath = [arr lastObject];

    

    //拼接一个文件的路径

    

    NSString *txtPath = [docPath stringByAppendingString:@"/123.txt"];

    


    //2.按照路径写入

    

    NSString *str = @"aa";

    

    //参数1:要写入的路径

    //参数2:是否对写入的文件进行写保护

    //参数3:编码格式

    //参数4:错误信息

    NSError *error = nil;

    [str writeToFile:txtPath atomically:YES encoding:NSUTF8StringEncoding error:&error];

    

    //数组写入本地

    

    NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];

    NSString *arrPath = [docPath stringByAppendingPathComponent:@"suibian.plist "];

    //写入本地

    [array writeToFile:arrPath atomically:YES];

    

    

    

    

    //创建boss对象

    Boss *boss = [[Boss alloc] init];

    

    boss.name = @"ww";

    boss.number = @"20";

    boss.sex = @"man";

    

    // 将复杂对象写入本地的工具

    

    //参数1:要写入本地的对象

    //参数2:要写入的路径

    NSString *bossPath = [docPath stringByAppendingPathComponent:@"boss.aa"];

    

    //归档类

    BOOL result = [NSKeyedArchiver archiveRootObject:boss toFile:bossPath];

    

    NSLog(@"复杂对象写入本地:%d", result);

    

    [boss release];

    

    //反归档类

    //从本地读取数据产生一个新的复杂对象

    Boss *bossReturn = [NSKeyedUnarchiver unarchiveObjectWithFile:bossPath];

    NSLog(@"%@", bossReturn.name);


}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值