//NSString与NSData之间的转换
NSString *str = @"abcdefg";
NSData *strData = [str dataUsingEncoding:NSUTF8StringEncoding];//把字符串变成data
NSLog(@"%@",strData);
NSString *backStr = [[NSString alloc] initWithData:strData encoding:NSUTF8StringEncoding];
NSLog(@"%@",backStr);
//对象与NSKeyedArchiver之间的转换
NSArray *arr = @[@"aa",@"bb"];
NSData *arrData = [NSKeyedArchiver archivedDataWithRootObject:arr];//把对象变成data,一次只能把一个对象变成一个data
NSLog(@"%@",arrData);
NSArray *backArr = [NSKeyedUnarchiver unarchiveObjectWithData:arrData];//把data变成对象
NSLog(@"%@",backArr);
//请做一个字典,两个key:name:lily,age:18,用上面方法变成data
#pragma mark 多个对象变成一个data
NSDictionary *dic = @{@"name":@"pp",@"age":@"16"};//成对出现,一对一个冒号,冒号前是key,后是value,多个对之间用,隔开
NSLog(@"%@",dic);
NSArray *secondArr = @[@"123",@"456"];
//1、准备一个可变的NSData,当成容器来存我们的对象
NSMutableData *muData = [NSMutableData dataWithCapacity:0];
//2、用alloc的方法做一个archiver的对象,初始化这个对象的时候,要用一个可变data,这个archiver将把很多个对象转成data,这些data都存在了这个可变data中
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:muData];
//3、用archiver对象来调用encoding方法把对象存入这个可变data,同时给每一个存入的对象一个key,这个key就是未来我们从这个data中取得相应对象时候用的依据
[archiver encodeObject:dic forKey:@"ppp"];
[archiver encodeObject:secondArr forKey:@"qqqq"];
//4、完成
[archiver finishEncoding];
NSLog(@"%@",muData);
#pragma mark 从data中根据之前设置好的key找到对应的对象
//1、做一个NSKeyedUnArchiver对象,初始化的时候用一个data,这个data里存着很多个对象
NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:muData];
//2、通过一个key,用unArchiver找到对应的对象,调用decode方法
NSDictionary *unDic = [unArchiver decodeObjectForKey:@"ppp"];
NSLog(@"%@",unDic);
//3、完成
[unArchiver finishDecoding];