一句代码自动生成 Model 文件,拖入工程既能使用。
当一个网络数据比较复杂时,往往需要一些功夫来创建对应的数据模型,笔者正是苦于手动创建 Model 痛苦,决定做一个工具来自动创建 Model 文件。
为了降低工具开发成本,直接基于 iOS 系统库来做。如果是做 Mac 上的工具,会存在一些技术问题,比如不便于使用 iOS 程序的动态链接库,处理 iOS 中的一些类型时会比较乏力,并且工具不知道目标工程的信息,在判断类名重复、读取工程信息等情况时会很不方便。
本文讲解 YBModelFile 的设计思路和技术细节。
为了便于理解,先放上一个 json:
{ "name":"jack", "address":{"city":"北京", "location":"x,x"}, "orderList":[{"id":1, "goods":"手机"}, {"id":2, "goods":"电脑"}] }
可以构建为如下的一些类:
@interface PersonAddressModel : NSObject@property (nonatomic, copy) NSString *city;@property (nonatomic, copy) NSString *location;@end@interface PersonOrderListModel : NSObject@property (nonatomic, copy) NSString *goods;@property (nonatomic, assign) NSInteger *id;@end@interface PersonModel : NSObject@property (nonatomic, copy) NSString *name;@property (nonatomic, strong) PersonAddressModel *address;@property (nonatomic, copy) NSArray *orderList;@end
下面就来讲述,工具如何来自动构建这些东西(当然还包括.m文件的一些实现)。
工具需要通过 json 数据构建一些自定义的类,那么如示例所示,构建一个类必须要知道它的类名和所有属性,而一个类的属性可能是另一个类,也可能是一个包裹类的数组...
很容易想到分治法,将数据局部化处理,于是可以将它们构建为一个树形结构:
本文由 投稿者 创作,文章地址:https://blog.isoyu.com/archives/ios-xiaoshuaigongjuzidongshengcheng-model-wenjian.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:3 月 25, 2019 at 05:09 下午