很喜歡簡書的整體設計模式,于是把以前的筆記稍加整理,搬一部分到這里。
通過runtime實現簡單的json解析(仿JsonModel模式),只實現了一小小部分功能,并沒有做太多的容錯處理,主要是為了練習一下runtime機制
部分代碼:
#import "CWModel.h"
/*
*"code": "110000",
*"name": {"code": "110101", "name": "東城區"},
*"cell": []
*/
/*
*"code": "110100",
*"name": "市轄區",
*"cell": [{
*"code": "110101",
*"name": "東城區"
*}]
*/
@interface CWAreaModel : CWModel
@property (nonatomic, copy) NSString *code;
@property (nonatomic, copy) NSString *name;
@end
@protocol CWAreaModel @end
@interface CWCityModel : CWModel
@property (nonatomic, copy) NSString *code;
@property (nonatomic, copy) NSString *name;
@property (nonatomic, strong) NSArray <CWAreaModel>*cell;
@end
@protocol CWCityModel @end
@interface CWChinaModel : CWModel
@property (nonatomic, assign) BOOL ok;
@property (nonatomic, assign) NSInteger number;
@property (nonatomic, copy) NSString *code;
@property (nonatomic, strong) CWAreaModel *name;
@property (nonatomic, strong) NSArray <CWCityModel>*cell;
@property (nonatomic, strong) NSDictionary *nameDict;
@end
/** 字典轉模型 */
+ (instancetype)modelWithDict:(NSDictionary *)dict;
/** 打印 */
+ (NSString *)resolveDict:(NSDictionary *)dict;
Demo中有注釋具體實現Demo地址:https://github.com/CyanSmile/RuntimeTest.git