標籤:c style class blog code java
在IOS開發中,要做字典轉模型一般情況如下:
1 /** 2 * 聲明方法 3 */ 4 - (instancetype) initWithDictionary:(NSDictionary *)dict; 5 + (instancetype) carWithDictionary:(NSDictionary *)dict; 6 7 /** 8 * 實現方法 9 */10 - (instancetype)initWithDictionary:(NSDictionary *)dict11 {12 if (self = [super init]) {13 [self setValuesForKeysWithDictionary:dict];14 }15 return self;16 }17 18 + (instancetype)carWithDictionary:(NSDictionary *)dict19 {20 return [[ZYCar alloc]initWithDictionary:dict];21 }
先在標頭檔中聲明,再在.m
檔案中實現具體的方法,而且這些方法的內容基本一致,可以用宏簡化。
2.建立一個.h檔案,並在其中添加如下代碼:
1 #define InitH(name) 2 - (instancetype)initWithDict:(NSDictionary *)dict; 3 + (instancetype)name##WithDict:(NSDictionary *)dict; 4 5 #define InitM(name) 6 - (instancetype)initWithDict:(NSDictionary *)dict 7 { 8 if (self = [super init]) { 9 [self setValuesForKeysWithDictionary:dict]; 10 } 11 return self; 12 } 13 + (instancetype)name##WithDict:(NSDictionary *)dict 14 { 15 return [[self alloc] initWithDict:dict]; 16 }17 18 #endif
引用這個.h檔案後,上面方法的聲明和實現可以化簡為一句
InitH(name);InitM(name); name為模型類名