作为数据持久化的一种方式
归档接档都只要5步奏完成
归档 1 创建一个容器
NSMutableData * data = [[[NSMutableData alloc] init] autorelease];//1容器
2创建压缩类
NSKeyedArchiver * archiver = [[[NSKeyedArchiver alloc] initForWritingWithMutableData:data] autorelease];//2压缩类
3初始化要存储的对象
//初始化student
Sudent * stu = [[[Sudent alloc] init] autorelease];//3初始化
stu.name = @"将";
stu.sex = @"男";
stu.age = 20;
4用压缩类对数据对象进行压缩
[archiver encodeObject:stu forKey:@"stu"];//4,压缩对象,并赋予他key值.
5压缩完成
[archiver finishEncoding];//5完成压缩.
压缩完成之后记得将压缩完成的对象写入文件
[data writeToFile:[self filePath:@"archiver.txt"] atomically:YES]
接档 1从文件中读取data
NSData * fileDate = [[[NSData alloc] initWithContentsOfFile:[ self filePath:@"archiver.txt"]] autorelease];
2创建解压类,对data进行解压
NSKeyedUnarchiver * unArchiver = [[[NSKeyedUnarchiver alloc] initForReadingWithData:fileDate]autorelease ];
3通过键值key,查找对象
Sudent * student = [unArchiver decodeObjectForKey:@"stu"];
4完成解压
[unArchiver finishDecoding];
当然.上面的也可以对数组,字典进行压缩,
比如1,对数组2进行压缩,
只要
NSMutableData * data = [[[NSMutableData alloc] init] autorelease];
//创建压缩类
NSKeyedArchiver * acher = [[[NSKeyedArchiver alloc] initForWritingWithMutableData:data] autorelease];
//对准备压缩的对象
[acher encodeObject:array forKey:@"array"];
//完成压缩(这时候,NSSArray已经压缩到容器中)
[acher finishEncoding];
解压的话
NSArray * array = [unArchier decodeObjectForKey:@"array"];
这就可以了
然后顺便说一下文件读写的问题NSMutableData * data = [[[NSMutableData alloc] init] autorelease];
[data writeToFile:[self filePath:@"testArray.txt"] atomically:YES];
[data writeToFile:filePath];