• (转)一句话实例化模型


      读书人偷书不算偷

      在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
  • 相关阅读:
    C++17 filesystem文件系统
    简易版本vue的实现
    javaSE基础04
    javaSE基础03
    javaSE基础02
    JavaSE基础01
    Document对象和window对象
    进程和子进程及端口的常用命令
    vue分页组件二次封装---每页请求特定数据
    css图片垂直水平居中及放大(实现水平垂直居中的效果有哪些方法?)
  • 原文地址:https://www.cnblogs.com/pretty-guy/p/4060493.html
Copyright © 2020-2023  润新知