(转)一句话实例化模型
作者:互联网
读书人偷书不算偷
在iOS开发中,很多时候我们需要用字典来实例化模型,这就意味着没需要实例化一个模型的时候都需要重复的写init方法来实例化模型,为了“偷懒”,可以使用宏定义来减少代码
定义一个头文件"initWithDict.h"
1 // 英文字母、数字、_ 2 //##为宏定义中得连接符 “\”表示下一行也属于宏 3 #define kInitH(name) \ 4 - (id)initWithDict:(NSDictionary *)dict; \ 5 + (id)name##WithDict:(NSDictionary *)dict; 6 7 #define kInitM(name) \ 8 + (id)name##WithDict:(NSDictionary *)dict \ 9 { \ 10 return [[self alloc] initWithDict:dict]; \ 11 }
然后在每一个需要用字典来实例化的模型中导入头文件"initWithDict.h",在定义构造方法时直接使用宏定义,传入参数名即可,示例如下:
#import "initWithDict.h" @interface WKProvince : NSObject @property (nonatomic, copy) NSString* name; @property (nonatomic, strong) NSDictionary* cities; kInitH(province);
1 #import "WKProvince.h" 2 3 @implementation WKProvince 4 5 6 - (id)initWithDict:(NSDictionary *)dict 7 { 8 if (self = [super init]) { 9 self.name = dict[@"name"]; 10 self.cities = dict[@"cities"]; 11 } 12 return self; 13 } 14 15 kInitM(province); 16 @end
转载于:https://www.cnblogs.com/pretty-guy/p/4060493.html
标签:name,一句,模型,NSDictionary,id,实例,dict,initWithDict,self 来源: https://blog.csdn.net/weixin_34166847/article/details/94287715