根据 JSON 自动生成 Model 文件(数据模型)
技术原理博客:iOS 效率工具:自动生成 Model 文件
注意:仅在模拟器下运行有效
- 一句代码自动生成数据模型文件
- 支持 YYModel / MJExtension 的自动映射
- 自动过滤转换类名和属性名
- 自动实现 NSCopying / NSCoding 协议方法
- 支持文件创建策略:一个类一组文件或并为一组文件
- 支持属性类型的过滤策略
- 算法处理模块粒度小且面向协议,可自由定制局部算法
- 在 Podfile 中添加
pod 'YBModelFile', :configurations => ['Debug']
。 - 执行
pod install
或pod update
。 - 导入
<YBModelFile/YBModelFile.h>
。
若搜索不到库,可使用 rm ~/Library/Caches/CocoaPods/search_index.json 移除本地索引然后再执行安装,或者更新一下 CocoaPods 版本。
- 下载 YBModelFile 文件夹所有内容并且拖入你的工程中。
- 导入
YBModelFile.h
。
可下载 DEMO 查看示例。
NSString *name = ...; //主 Model 文件名字
id data = ...; //json数据
[YBModelFile createFileWithName:name data:data];
一句代码调用过后,工具会自动在桌面上创建一个 YBModelFile-Workspace 文件夹,之后所有自动创建的 Model 文件会存储在该文件夹下,只需要将它们拖入工程就能直接使用。
当然,可以使用-createFileWithName:data:path:
方法中的path
指定工作空间的存储路径。
由于工具会自动进行属性和数组元素的映射,你需要指定工程使用的字典转模型框架,目前支持 YYModel 和 MJExtension。
[YBMFConfig shareConfig].framework = YBMFFrameworkYY;
NSCoding 和 NSCopying 协议是否实现可以指定:
[YBMFConfig shareConfig].needCoding = NO;
[YBMFConfig shareConfig].needCopying = NO;
工具提供简单的定制:
[YBMFConfig shareConfig].fileHHandler.ybmf_skipLine = YES;
[YBMFConfig shareConfig].fileMHandler.ybmf_skipLine = YES;
默认情况下,类名公用后缀为Model
,可以自行定制:
[YBMFConfig shareConfig].fileSuffix = @"File";
在构建 Model 时,往往需要过滤掉一些类型,比如需要使用NSString
提到NSNumber
,过滤掉字典中的可变类型。这些都可以通过一个多选枚举来配置,过滤的类型工具会使用更宽泛的类型来处理。
[YBMFConfig shareConfig].ignoreType = YBMFIgnoreTypeAllDigital | YBMFIgnoreTypeMutable;
目前支持两种策略,一种是所有类都放到一组文件 (.h/.m),一种是一个类对应一组文件:
[YBMFConfig shareConfig].filePartitionMode = YBMFFilePartitionModeApart;
对于工具中的算法,都是通过一些类来处理,默认有实现,如果需要自定义,只需要实现对应的协议并且赋值给配置单例:
/** 名字处理器 */
@property (nonatomic, strong) id<YBMFNameHandler> nameHander;
/** 文件头部注解处理器 */
@property (nonatomic, strong) id<YBMFFileNoteHandler> fileNoteHander;
/** .h文件代码处理器 */
@property (nonatomic, strong) id<YBMFFileHHandler> fileHHandler;
/** .m文件代码处理器 */
@property (nonatomic, strong) id<YBMFFileMHandler> fileMHandler;
/** 节点作为父节点的属性时 Code 格式处理器 */
@property (nonatomic, strong) id<YBMFCodeForParentHandler> codeForParentHandler;