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]; }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!