归档反归档
//归档 反归档(麻烦的方法)
/*
//归档
//创建Person实例对象
Person *person1=[[Person alloc]init];
person1.name=@"bbb";
person1.age=@"39";
Person *person2=[[Person alloc]init];
person2.name=@"aaa";
person2.age=@"18";
//归档使用的NSData
NSMutableData *person1Data=[NSMutableData data];
//创建归档工具
NSKeyedArchiver *achiver=[[NSKeyedArchiver alloc]initForWritingWithMutableData:person1Data];
//进行归档(需要宏定义)
[achiver encodeObject:person1 forKey:kPerson1];
[achiver encodeObject:person2 forKey:kPerson2];
//完成转换
[achiver finishEncoding];
//获取Documents路径
NSString *documentsPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
//拼接文件路径
NSString *personPath=[documentsPath stringByAppendingString:@"/刘杰.xxoo"];
//写入
[person1Data writeToFile:personPath atomically:YES];
NSLog(@"documents:%@",documentsPath);
//反归档
//通过文件路径获取data数据
NSData *unData=[NSData dataWithContentsOfFile:personPath];
//创建反归档工具
NSKeyedUnarchiver *unArchiver=[[NSKeyedUnarchiver alloc]initForReadingWithData:unData];
//进行反归档
Person *p1=[unArchiver decodeObjectForKey:kPerson1];
Person *p2=[unArchiver decodeObjectForKey:kPerson2];
//结束反归档
[unArchiver finishDecoding];
NSLog(@"name:%@",p1.name);
NSLog(@"age:%@",p1.age);
NSLog(@"name:%@",p2.name);
NSLog(@"age:%@",p2.age);
*/
//归档 反归档(简单方法)
//获取Documents路径
NSString *docPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
//拼接文件路径
NSString *filePath=[docPath stringByAppendingString:@"/personArray.plist"];
/*
//只能归档一个对象
Person *pn1=[[Person alloc]init];
pn1.name=@"王小二";
pn1.age=@"20";
//归档
[NSKeyedArchiver archiveRootObject:pn1 toFile:filePath];
//反归档
Person *p1=[NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
NSLog(@"name:%@",p1.name);
NSLog(@"age:%@",pn1.age);
*/
Person *pn1=[[Person alloc]init];
pn1.name=@"Tom";
pn1.age=@"12";
Person *pn2=[[Person alloc]init];
pn2.name=@"Kim";
pn2.age=@"25";
NSArray *array=@[pn1,pn2];//把两个数据放到数组里面
//反归档
NSArray *a=[NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
NSLog(@"name:%@",[a[0] name ]);
NSLog(@"age:%@",[a[0] age]);
NSLog(@"name:%@",[a[1] name]);
NSLog(@"age:%@",[a[1] age]);
posted on 2015-07-24 11:24 yucaijiang 阅读(222) 评论(0) 编辑 收藏 举报