Object-c Archiving归档
来源:互联网 发布:星图数据监测 编辑:程序博客网 时间:2024/04/30 18:04
1.系统对象
NSArray
NSDictionary
NSSet
NSNumber
因为系统自定义对象都实现了NSCoding接口
以NSArray为例,array没有赋值,为空
NSArray *array=[[NSArray alloc]init];
NSString *fileString=@"/Users/administrator/Desktop/arrayfile.plist";
//array数组存储到目的路径fileString下
if ([array writeToFile:fileString atomically:YES]) {
NSLog(@"输出成功");
}
else{
NSLog(@"输出错误");
}
//用本地文件创建array1
NSFileManager *manager=[NSFileManager defaultManager];
//判断目标路径下是否有文件
if ([manager fileExistsAtPath:fileString]) {
NSArray *array1=[[NSArray alloc]initWithContentsOfFile:fileString];
NSLog(@"创建成功");
}
else{
NSLog(@"创建失败");
}
2.用户自定义类型
自定义类型要实现<NSCoding>协议
.h文件中
既要继承父类<NSObject>也要实现协议<NSCoding>
.m文件中
@synthesize name;
//编码
-(void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:self.name forKey:@"name"];
}
//解码
-(id)initWithCoder:(NSCoder *)aDecoder{
//对类的其他成员进行初始化
if (self=[super init]) {
self.name=[aDecoder decodeObjectForKey:@"name"];
}
return self;
}
//重写description能输出自定义对象成员(如果不重写 输出的是"<Stuff: 0x100201b30>",)
//所属类的名称和该对象的首地址
-(NSString *)description{
return [NSString stringWithFormat:@"%@",self.name];
}
main.m文件中
NSMutableArray *mutStuff=[[NSMutableArray alloc]initWithObjects:stuff,stuff1,stuff2,nil];
//数组写入文件 存储到本地上去
NSString *filString=@"/Users/administrator/Desktop/muStuff";
if ([NSKeyedArchiver archiveRootObject:mutStuff toFile:filString]) {
NSLog(@"输出成功,已存储在本地目录上!");
}
else{
NSLog(@"输出错误");
}
//新建NSArray用本地文件
NSFileManager *manager=[NSFileManager defaultManager];
//判断目的文件路径下是否为空
if([manager fileExistsAtPath:filString]){
NSArray *Stuff=[NSKeyedUnarchiver unarchiveObjectWithFile:filString];
NSLog(@"读取本地文件:%@",Stuff);
}
else{
NSLog(@"文件不存在");
}
3.自定义归档
NSArray
NSDictionary
NSSet
NSNumber
因为系统自定义对象都实现了NSCoding接口
以NSArray为例,array没有赋值,为空
NSArray *array=[[NSArray alloc]init];
NSString *fileString=@"/Users/administrator/Desktop/arrayfile.plist";
//array数组存储到目的路径fileString下
if ([array writeToFile:fileString atomically:YES]) {
NSLog(@"输出成功");
}
else{
NSLog(@"输出错误");
}
//用本地文件创建array1
NSFileManager *manager=[NSFileManager defaultManager];
//判断目标路径下是否有文件
if ([manager fileExistsAtPath:fileString]) {
NSArray *array1=[[NSArray alloc]initWithContentsOfFile:fileString];
NSLog(@"创建成功");
}
else{
NSLog(@"创建失败");
}
2.用户自定义类型
自定义类型要实现<NSCoding>协议
.h文件中
既要继承父类<NSObject>也要实现协议<NSCoding>
.m文件中
@synthesize name;
//编码
-(void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:self.name forKey:@"name"];
}
//解码
-(id)initWithCoder:(NSCoder *)aDecoder{
//对类的其他成员进行初始化
if (self=[super init]) {
self.name=[aDecoder decodeObjectForKey:@"name"];
}
return self;
}
//重写description能输出自定义对象成员(如果不重写 输出的是"<Stuff: 0x100201b30>",)
//所属类的名称和该对象的首地址
-(NSString *)description{
return [NSString stringWithFormat:@"%@",self.name];
}
main.m文件中
NSMutableArray *mutStuff=[[NSMutableArray alloc]initWithObjects:stuff,stuff1,stuff2,nil];
//数组写入文件 存储到本地上去
NSString *filString=@"/Users/administrator/Desktop/muStuff";
if ([NSKeyedArchiver archiveRootObject:mutStuff toFile:filString]) {
NSLog(@"输出成功,已存储在本地目录上!");
}
else{
NSLog(@"输出错误");
}
//新建NSArray用本地文件
NSFileManager *manager=[NSFileManager defaultManager];
//判断目的文件路径下是否为空
if([manager fileExistsAtPath:filString]){
NSArray *Stuff=[NSKeyedUnarchiver unarchiveObjectWithFile:filString];
NSLog(@"读取本地文件:%@",Stuff);
}
else{
NSLog(@"文件不存在");
}
3.自定义归档
0 0
- Object-c Archiving归档
- Obect-C:Archiving归档小结
- SAP Archiving (归档)
- SAP Archiving (归档)
- Object-C-归档
- Object-c 归档
- Object-c归档使用
- Object-C 归档、解档
- Object-c 归档--源自技术
- Object archiving and Object graphs
- iOS归档 反归档 Archiving Unarchiver
- Oracle Database 12c新特性 In-Database Archiving数据库内归档
- Oracle 12c 新特性之 数据库内归档(In-Database Archiving)
- Object-C 学习笔记(三十)--- 归档(3)---对象归档
- iOS 对象持久化之- 归档 archiving
- 梳理版本Version、压缩compress、归档archiving
- Object-C学习(十):归档
- Object-C中自定义对象的归档
- 开博纪念,做歪诗一首
- 常用Web开发工具
- 检测点2.2
- 信息安全领域会议总结
- VS2010 sp1和Windows SDK 7.1正确安装步骤 .
- Object-c Archiving归档
- android编译时生成了一个 main.out.xml文件,无法编译的解决办法
- vbox如何直接存取物理磁盘分区 (updated 2014.01.13 )
- 开个擐甲挥戈
- CoreData
- JAVA用JDBC模式简单的连接数据库
- 的图样图如若如图
- 详解SVN文件冲突和树冲突解决方法
- 链表练习