Objective-C基础 自定义对象归档详解及简单实例
自定义对象要实现归档必须实现NSCoding协议
NSCoding协议有两个方法,encodeWithCoder方法对对象的属性数据做编码处理,initWithCoder解码归档数据来初始化对象。
示例1
.h头文件
#import@interfaceuser:NSObject @property(nonatomic,retain)NSString*name; @property(nonatomic,retain)NSString*email; @property(nonatomic,retain)NSString*pwd; @property(nonatomic,assign)intage; @end
.m实现文件
#import"user.h"
#defineAGE@"age"
#defineNAME@"name"
#defineEMAIL@"email"
#definePASSWORD@"password"
@implementationuser
//对属性编码
-(void)encodeWithCoder:(NSCoder*)aCoder
{
[aCoderencodeInt:_ageforKey:@"age"];
[aCoderencodeObject:_nameforKey:AGE];
[aCoderencodeObject:_emailforKey:EMAIL];
[aCoderencodeObject:_pwdforKey:PASSWORD];
}
//对属性解码
-(id)initWithCoder:(NSCoder*)aDecoder
{
self=[superinit];
if(self)
{
self.age=[aDecoderdecodeIntForKey:AGE];
self.name=[aDecoderdecodeObjectForKey:NAME];
self.email=[aDecoderdecodeObjectForKey:EMAIL];
self.pwd=[aDecoderdecodeObjectForKey:PASSWORD];
}
returnself;
}
-(void)dealloc
{
[_namerelease];
[_emailrelease];
[_pwdrelease];
[superdealloc];
}
@end
main函数的调用
user*userObj=[[useralloc]init];
userObj.age=33;
userObj.email=@"adfdadf@qq.com";
userObj.pwd=@"212212";
userObj.name=@"ricard";
NSString*path=[NSHomeDirectory()stringByAppendingPathComponent:@"Desktop/custom.text"];
BOOLsucc=[NSKeyedArchiverarchiveRootObject:userObjtoFile:path];
if(succ){
NSLog(@"Hello,World!");
user*usertemp=[NSKeyedUnarchiverunarchiveObjectWithFile:path];
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!