博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据存储之归档解档
阅读量:5209 次
发布时间:2019-06-14

本文共 1954 字,大约阅读时间需要 6 分钟。

归档也叫序列化,是将文件存在硬盘,解码是从硬盘还原

一、使用属性列表进行归档
  如果对象是NSString,NSDictionary,NSArray,NSData,NSNumber,NSDate,可以是使用writeToFile:atomically方法将数据写到文件,注意这种方式是明文。
  NSArray *inputArray = [NSArray arrayWithObjects:@“abc”, @“123”, @“qiaohaibin”];
  //写入文件 当前目录下test.plist
  //一般写入都是写入沙盒Documents下
  BOOL result = [inputArray writeToFile:@“test.plist” atomically:YES];
  if(!result){
    NSLog(@“fail to write to file”);
  }
  //读出文件
  NSArray *outputArray = [NSArray arrayWithContentsOfFile:@“test.plist”];
  NSLog(@“%@“, outputArray);
二、使用NSKeyedArchiver和NSkeyedUnarchiver进行归档和解档。
  //文件完整路径
  NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
  NSString *fileName = [filePath stringByAppendingPathComponent:@“test.archive"];
  1.对上面所说的类和基本数据进行归档和解档
    //归档
    NSMutableData *inputData = [NSMutableData data];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:inputData];
    [archiver encodeObject:[NSArray arrayWithObject:@“qiaohaibin”] forKey:@“array”];
    [archiver encodeInt:24 forKey:@“age”];
    [archiver finishEncoding];
    BOOL result = [inputData writeToFile:fileName atomically:YES];
    if(!result){
      NSLog(@“fail to archive to file”);
    }
    //解档
    NSData *outputData = [NSMutaleData data];
    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:outputData];
    NSArray *array = [unarchiver decodeObjectForKey:@“array”];
    int age = [unarchiver decodeIntForKey:@“age”];
  2.自定义对象进行归档和解档(需要事项NSCoding协议)
    //归档时调用
    - (void)encodeWithCoder:(NSCoder *)aCoder{
      [aCoder encodeInt:_age forKey:@“AGE”];
      [aCoder encodeObject:_username forKey:@“USERNAME”];
    }

    //解档时调用

    - (id)initWithCoder:(NSCoder *)aDecoder{
      self.age = [aDecoder decodeObjectForKey:@“AGE”];
      self.username = [aDecoder decodeObjectForKey:@“USERNAME”];
    }

转载于:https://www.cnblogs.com/dilin/p/3699588.html

你可能感兴趣的文章
基于网络的 Red Hat 无人值守安装
查看>>
Mybatis第六篇【配置文件和映射文件再解读、占位符、主键生成与获取、Mapper代理】...
查看>>
MySQL学习笔记(二):MySQL数据类型汇总及选择参考
查看>>
jQ 移动端返回顶部代码整理
查看>>
博客园界面美化
查看>>
sql查询远程数据库的表的数据并填充到本地数据库的表
查看>>
YII缓存依赖的应用
查看>>
决策树在机器学习的理论学习与实践
查看>>
Biee 11g权限详解
查看>>
minggw 安装
查看>>
Jquery操作cookie,实现简单的记住用户名的操作
查看>>
[BZOJ1196][HNOI2006]公路修建问题 二分答案+最小生成树
查看>>
PHP基础入门(二)
查看>>
[Luogu P3119] [USACO15JAN]草鉴定Grass Cownoisseur (缩点+图上DP)
查看>>
【原创】大数据基础之Zookeeper(4)应用场景
查看>>
18款在线代码片段测试工具
查看>>
20.C++- &&,||逻辑重载操作符的缺陷、,逗号重载操作符的分析
查看>>
静态变量数组实现LRU算法
查看>>
在SQL中怎么把一列字符串拆分为多列
查看>>
中文系统 上传file的input显示英文
查看>>