您的位置:首页 > 其它

归档反归档

2015-07-24 11:24 295 查看
//归档 反归档(麻烦的方法)
/*
//归档
//创建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]);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: