IOS中归档和反归档操作<代码演示>
来源:互联网 发布:淘宝客推广如何设置 编辑:程序博客网 时间:2024/06/10 19:36
//归档操作
#import <Foundation/Foundation.h>
//实现自定义类的归档和反归档操作
//如需当期自动类可完成归档操作,必须遵守NSCoding协议,并实现协议中的编码和解码方法
//encodeWithCoder-->编码和initWithCoder-->解码
@interface contactItem : NSObject<NSCoding]]]]>
@property (nonatomic,retain) NSString *contactName;
@property (nonatomic,retain) NSString *contactPhone;
@property (nonatomic,retain) NSString *contactGender;
@end#import "contactItem.h"
#pragma mark --NSCoding Methods--
-(void)encodeWithCoder:(NSCoder *)aCoder{
//通过aCoder对自定义类属性的实例对象属性进行编码操作
[aCoder encodeObject:_contactName forKey:@"contactName"];
[aCoder encodeObject:_contactPhone forKey:@"contactPhone"];
[aCoder encodeObject:_contactGender forKey:@"contactGender"];
}
-(id)initWithCoder:(NSCoder *)aDecoder{
//根据aDecoder做解码操作,解码返回的对象由属性的实例对象接收
_contactName = [aDecoder decodeObjectForKey:@"contactName"];
_contactPhone = [aDecoder decodeObjectForKey:@"contactPhone"];
_contactGender = [aDecoder decodeObjectForKey:@"contactGender"];
return self;
}
@end
——归档
//实例化
contactItem *anyItem = [[contactItem alloc] init];
[anyItem setContactName:@"姜子牙"];
[anyItem setContactPhone:@"12345678"];
[anyItem setContactGender:@"男"];
NSString *archiverPath = [documentPath stringByAppendingPathComponent:@"contactItem.archiver"];
//对自定义类型的实例对象做归档操作
NSMutableData *datas = [NSMutableData data];
//编码并写入NSMutable中
NSKeyedArchiver *keyArchiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:datas];
[keyArchiver encodeObject:anyItem forKey:@"contactItem"];
//完成编码,即完成归档操作
contactItem *anyItem = [[contactItem alloc] init];
[anyItem setContactName:@"姜子牙"];
[anyItem setContactPhone:@"12345678"];
[anyItem setContactGender:@"男"];
NSString *archiverPath = [documentPath stringByAppendingPathComponent:@"contactItem.archiver"];
//对自定义类型的实例对象做归档操作
NSMutableData *datas = [NSMutableData data];
//编码并写入NSMutable中
NSKeyedArchiver *keyArchiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:datas];
[keyArchiver encodeObject:anyItem forKey:@"contactItem"];
//完成编码,即完成归档操作
//只有为归档对象发送finishEncoding消息,才能为对象完成编码操作,并将编码完成后的二进制数据流写入到上面提供的NSMutableData类型的对象中
[keyArchiver finishEncoding];
//将编码完成的二进制数据写入到指定的路径下文件中,实现持久化
[datas writeToFile:archiverPath atomically:YES];
[keyArchiver finishEncoding];
//将编码完成的二进制数据写入到指定的路径下文件中,实现持久化
[datas writeToFile:archiverPath atomically:YES];
//反归档操作
//实现反归档操作-步骤
/*
1.得到要归档文件存储位置
2.将其实例化为NSData类型实例对象
3.有NSKeyUnarchiver类型的实例对象做反归档操作
4.再转化为指定类型的自定义类型对象,并接收各个属性
*/
//1.得到要归档文件存储位置
NSString *archiverPath =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *realPath = [archiverPath stringByAppendingPathComponent:@"contactItem.archiver"];
//2.将其实例化为NSData类型实例对象
NSData *datas = [NSData dataWithContentsOfFile:realPath];
//3.有NSKeyUnarchiver类型的实例对象做反归档操作
NSKeyedUnarchiver *keyUnarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:datas];
//4.再转化为指定类型的自定义类型对象,并接收各个属性
contactItem *oneItem = [keyUnarchiver decodeObjectForKey:@"contactItem"];
//发送完成解码消息
[keyUnarchiver finishDecoding];
NSLog(@"反归档后数据%@",[oneItem description]);
/*
1.得到要归档文件存储位置
2.将其实例化为NSData类型实例对象
3.有NSKeyUnarchiver类型的实例对象做反归档操作
4.再转化为指定类型的自定义类型对象,并接收各个属性
*/
//1.得到要归档文件存储位置
NSString *archiverPath =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *realPath = [archiverPath stringByAppendingPathComponent:@"contactItem.archiver"];
//2.将其实例化为NSData类型实例对象
NSData *datas = [NSData dataWithContentsOfFile:realPath];
//3.有NSKeyUnarchiver类型的实例对象做反归档操作
NSKeyedUnarchiver *keyUnarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:datas];
//4.再转化为指定类型的自定义类型对象,并接收各个属性
contactItem *oneItem = [keyUnarchiver decodeObjectForKey:@"contactItem"];
//发送完成解码消息
[keyUnarchiver finishDecoding];
NSLog(@"反归档后数据%@",[oneItem description]);
0 0
- IOS中归档和反归档操作<代码演示>
- iOS中实现归档和反归档
- iOS归档、反归档
- iOS 归档 反归档
- 归档和反归档
- iOS归档与反归档
- iOS归档与反归档
- IOS文件操作和自定义对象的归档(序列化)、反归档(反序列化)
- iOS中的数据持久化,归档和反归档
- 【iOS开发-存储】使用NSCoding归档和反归档
- iOS数据持久化,写入,归档和反归档
- iOS开发之归档(NSKeyedArchiver)和反归档(NSKeyedUnarchiver)
- IOS开发中的归档与反归档
- IOS巅峰之归档与反归档
- iOS归档 反归档 Archiving Unarchiver
- iOS 归档 和 自定义归档
- 数据存储之归档和反归档
- 归档和反归档以及文件管理
- php两个长数字或字符串的比较大小
- 零基础学习hadoop到上手工作线路指导(不断更新)
- txt文档读写注意事项
- (转)源码微信飞机大战讲解(一):基础储备 (二):绘制动态文字和图片
- 尊重原创,请保证您的文章为原创作品
- IOS中归档和反归档操作<代码演示>
- 猜字符串
- jquery360度旋转插件自动选择鼠标拖动旋转产品展示
- linux下makefile多目录编译动、静态库
- Clouda框架与Node.js技术沙龙圆满结束
- php+ajax实现微信上墙
- jsp开发技术应用的29个注意事项
- bat批处理脚本入门
- 历史的风