#import "BaseModel.h"
#import
@implementation BaseModel
// 歸檔
- (void)encodeWithCoder:(NSCoder *)enCoder{
//歸檔存儲(chǔ)自定義對(duì)象
unsigned int count = 0;
//獲得指向該類所有屬性的指針
objc_property_t *properties = class_copyPropertyList([self class], &count);
for (int i =0; i < count; i ++) {
//獲得
objc_property_t property = properties[i];
//根據(jù)objc_property_t獲得其屬性的名稱--->C語言的字符串
const char *name = property_getName(property);
NSString *key = [NSString stringWithUTF8String:name];
// 編碼每個(gè)屬性,利用kVC取出每個(gè)屬性對(duì)應(yīng)的數(shù)值
[enCoder encodeObject:[self valueForKeyPath:key] forKey:key];
}
free(properties);
}
// 解檔
- (id)initWithCoder:(NSCoder *)aDecoder{
//歸檔存儲(chǔ)自定義對(duì)象
unsigned int count = 0;
//獲得指向該類所有屬性的指針
objc_property_t *properties = class_copyPropertyList([self class], &count);
for (int i =0; i < count; i ++) {
objc_property_t property = properties[i];
//根據(jù)objc_property_t獲得其屬性的名稱--->C語言的字符串
const char *name = property_getName(property);
NSString *key = [NSString stringWithUTF8String:name];
//解碼每個(gè)屬性,利用kVC取出每個(gè)屬性對(duì)應(yīng)的數(shù)值
[self setValue:[aDecoder decodeObjectForKey:key] forKeyPath:key];
}
free(properties);
return self;
}
@end
然后其他類使用畜眨,只要繼承它就好了
#import "BaseModel.h"
@interface PeopleModel : BaseModel
@property (nonatomic, copy) NSString *name;
@property (nonatomic, assign) NSInteger age;
@end
OR