自定義對象要實現歸檔必須實現NSCoding協議
NSCoding協議有兩個方法,encodeWithCoder方法對對象的屬性數據做編碼處理,initWithCoder解碼歸檔數據來初始化對象。
示例1
.h頭文件
#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
.m實現文件
#import "user.h"
#define AGE @"age"
#define NAME @"name"
#define EMAIL @"email"
#define PASSWORD @"password"
@implementation user
//對屬性編碼
- (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeInt:_age forKey:@"age"];
[aCoder encodeObject:_name forKey:AGE];
[aCoder encodeObject:_email forKey:EMAIL];
[aCoder encodeObject:_pwd forKey: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];
}
return self;
}
-(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];
}
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。