objective-C 自定义对象归档的实现
自定義對象要實現歸檔必須實現NSCoding協議
NSCoding協議有兩個方法,encodeWithCoder方法對對象的屬性數據做編碼處理,initWithCoder解碼歸檔數據來初始化對象。
?
#import <Foundation/Foundation.h>
@interface user : NSObject <NSCoding>
@property(nonatomic,retain)NSString *name;
@property(nonatomic,retain)NSString *email;
@property(nonatomic,retain)NSString *pwd;
@property(nonatomic,assign)int age;
@end
#import "user.h"
#define AGE @"age"
#define NAME @"name"
#define EMAIL @"email"
#define PASSWORD @"password"
@implementation user
//對屬性編碼
- (void)encodeWithCoder:(NSCoder *)aCoder
{
? ? [aCoder encodeInt:_ageforKey:@"age"];
? ? [aCoder encodeObject:_nameforKey:AGE];
? ? [aCoder encodeObject:_emailforKey:EMAIL];
? ? [aCoder encodeObject:_pwdforKey:PASSWORD];
}
//對屬性解碼
- (id)initWithCoder:(NSCoder *)aDecoder
{
? ? self=[super init];
? ? if(self)
? ? {
? ? ? ? self.age=[aDecoderdecodeIntForKey:AGE];
? ? ? ? self.name=[aDecoderdecodeObjectForKey:NAME];
? ? ? ? self.email=[aDecoderdecodeObjectForKey:EMAIL];
? ? ? ? self.pwd=[aDecoderdecodeObjectForKey:PASSWORD];
? ? }
? ? returnself;
}
-(void)dealloc
{
? ? [_name release];
? ? [_email release];
? ? [_pwd release];
? ? [super dealloc];
}
@end
?
main函數的調用
?
user *userObj=[[user alloc] init];userObj.age=33;userObj.email=@"adfdadf@qq.com";userObj.pwd=@"212212";userObj.name=@"ricard";NSString *path=[NSHomeDirectory() stringByAppendingPathComponent:@"Desktop/custom.text"];BOOL succ=[NSKeyedArchiver archiveRootObject:userObj toFile:path];if (succ) {NSLog(@"Hello, World!");user *usertemp=[NSKeyedUnarchiver unarchiveObjectWithFile:path];}?
?
總結
以上是生活随笔為你收集整理的objective-C 自定义对象归档的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IOS开发中单例模式使用详解
- 下一篇: Oracle Spatial 翻译第一漳