OC_NSData

今天来说一下NSData,在iOS开发中很重要的一个角色.上传图片/数据存储/类型转换/网络请求 等关键的地方都会用到NSdata,这里我介绍几种简单使用的方法!

1NSStringNSData之间的转换

NSString *str = @"abcdefg";

NSData *strData = [str dataUsingEncoding:NSUTF8StringEncoding];//把字符串变成data

NSString *backStr=[[NSString alloc]initWithData:strDataencoding:NSUTF8StringEncoding];//还原字符串



2、单个对象与NSKeyedArchiver(转换器)之间的转换

NSArray *arr = @[@"aa",@"bb"];

NSData *arrData = [NSKeyedArchiver archivedDataWithRootObject:arr];//把对象变成data

NSArray *backArr = [NSKeyedUnarchiver unarchiveObjectWithData:arrData];//把data变成对象


3.多个对象存储为一个data/常说的归档

操作思路:

 1、准备一个可变的NSData,当成容器来存这多个对象

 2、用alloc的方法做一个archiver的对象,用一个可变data初始化这个对象,多个对象转成data都存在了这个可变data   

 3、用archiver对象来调用encoding方法把对象存入这个可变data,同时给每一个存入的对象一个key

 4、完成,闭合

NSDictionary *dic = @{@"name":@"pp",@"age":@"16"};

NSArray *secondArr = @[@"123",@"456"];

...


NSMutableData *muData = [NSMutableData dataWithCapacity:0];

NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:muData];


    [archiver encodeObject:dic forKey:@"DicData"];

    [archiver encodeObject:secondArr forKey:@"ArrData"];//这里的encode有各种对象的归档方法,根据自己所需要
                     ............

                     ............

                     ............

    [archiver finishEncoding];//记得归档完成要通知编译器


4.中根据之前设置好的key找到对应的对象

操作思路:

  1、做一个NSKeyedUnArchiver对象,用一个存了很多对象的data来初始化

  2、通过一个key,用unArchiver找到对应的对象,调用decode方法  

  3、完成,闭合

  NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:muData];

  NSDictionary *unDic = [unaArchiver decodeObjectForKey:@"DicData"];

  [unArchiver finishDecoding];//解完了,也好告诉编译器哦


补充:

也可以将数据转为Data,然后通过[NSFile Manager]  存到iPhone磁盘,等需要用到的时候在读取出来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值