源码

iOS 效率工具:自动生成 Model 文件

GitHub 地址:YBModelFile

一句代码自动生成 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 数据构建一些自定义的类,那么如示例所示,构建一个类必须要知道它的类名和所有属性,而一个类的属性可能是另一个类,也可能是一个包裹类的数组...

很容易想到分治法,将数据局部化处理,于是可以将它们构建为一个树形结构:

(0)

本文由 投稿者 创作,文章地址:https://blog.isoyu.com/archives/ios-xiaoshuaigongjuzidongshengcheng-model-wenjian.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:3 月 25, 2019 at 05:09 下午

热评文章

发表回复

[必填]

我是人?

提交后请等待三秒以免造成未提交成功和重复