iOS开发之数据以及对象归档与解归档

来源:互联网 发布:js base64 key 编辑:程序博客网 时间:2024/05/16 11:19

在开发过程中,我们难免要做一些数据的存储,例如用户账户密码的存储方便下次一键登录,收藏功能的实现有时候也会用到存储本地,诸如此类很多,对于数据存储,归档五一是比较好用的方法,下面说一下在iOS开发过程中的归档与解归档,总结了两种方式:

//--------------------------1.第一种归档方式-------------------

/***归档对象****/
NSArray *array = @[@"abc",@"123",@1234];
NSString *homePath = NSHomeDirectory();
NSString *path = [homePath stringByAppendingPathComponent:@"test.arc"];
BOOL success = [NSKeyedArchiver archiveRootObject:array toFile:path];
if (success) {
NSLog(@"archive success");
}

归档后大家就能在沙盒目录里面看到归档后的文件test.arc,如果找不到该文件在哪里,可以将path进行打印输出看一下,

NSLog("test.arc的路径在%@",path);

//**解归档***
NSString *homePath = NSHomeDirectory();
NSString *path = [homePath stringByAppendingPathComponent:@"test.arc"];
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
NSLog(@"%@",array);

 

//-----------------------2.第二种归档方式-----------------------
   //***归档对象**//
NSString *homePath = NSHomeDirectory();
NSString *path = [homePath stringByAppendingPathComponent:@"archiver2.archiv"];
NSMutableData *data = [NSMutableData data];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
NSArray *array = @[@"jack",@"tom"];
[archiver encodeInt:100 forKey:@"age"];
[archiver encodeObject:array forKey:@"names"];
[archiver finishEncoding];
[archiver release];

BOOL success = [data writeToFile:path atomically:YES];
if (success) {
NSLog(@"archive success");
}

 

/***解归档对象**/
NSString *homePath = NSHomeDirectory();
NSString *path = [homePath stringByAppendingPathComponent:@"archiver2.archiv"];
NSData *data = [NSData dataWithContentsOfFile:path];
NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
int age = [unArchiver decodeIntForKey:@"age"];
NSArray *names = [unArchiver decodeObjectForKey:@"names"];
[unArchiver release];
NSLog(@"age=%d,names=%@",age,names);

 

demo下载:

链接: http://pan.baidu.com/s/14Lc4Y 密码: 8diu

0 0
原创粉丝点击