zoukankan      html  css  js  c++  java
  • (转)一句话实例化模型

      读书人偷书不算偷

      在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
  • 相关阅读:
    volume 方式使用 Secret【转】
    查看 Secret【转】
    用 k8s 管理机密信息【转】
    MySQL 如何使用 PV 和 PVC?【转】
    【docker问题】Client.Timeout exceeded while awaiting headers
    PV 动态供给【转】
    回收 PV【转】
    NFS PersistentVolume【转】
    PV & PVC【转】
    IO流中的常见问题
  • 原文地址:https://www.cnblogs.com/pretty-guy/p/4060493.html
Copyright © 2011-2022 走看看