• Stars
    star
    225
  • Rank 176,080 (Top 4 %)
  • Language
    Objective-C
  • License
    MIT License
  • Created over 5 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

根据 JSON 自动生成 Model 文件(数据模型)

YBModelFile

Cocoapods  Cocoapods  License 

根据 JSON 自动生成 Model 文件(数据模型)

技术原理博客:iOS 效率工具:自动生成 Model 文件

注意:仅在模拟器下运行有效

特性

  • 一句代码自动生成数据模型文件
  • 支持 YYModel / MJExtension 的自动映射
  • 自动过滤转换类名和属性名
  • 自动实现 NSCopying / NSCoding 协议方法
  • 支持文件创建策略:一个类一组文件或并为一组文件
  • 支持属性类型的过滤策略
  • 算法处理模块粒度小且面向协议,可自由定制局部算法

安装

CocoaPods

  1. 在 Podfile 中添加 pod 'YBModelFile', :configurations => ['Debug']
  2. 执行 pod installpod update
  3. 导入 <YBModelFile/YBModelFile.h>

若搜索不到库,可使用 rm ~/Library/Caches/CocoaPods/search_index.json 移除本地索引然后再执行安装,或者更新一下 CocoaPods 版本。

手动导入

  1. 下载 YBModelFile 文件夹所有内容并且拖入你的工程中。
  2. 导入 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 协议

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;