YYModel介绍
YYModel是iOS/OSX平台下一个高性能的模型转换框架,和同类的其他框架相比,其无论从易用性和性能上都有很突出的优点。
YYModel在github上的仓库地址是:https://github.com/ibireme/YYModel,我们可以从中获取最新的版本以及相关信息。
YYModel具有如下特性:
高性能: 模型转换性能接近手写解析代码。
自动类型转换: 对象类型可以自动转换。
类型安全: 转换过程中,所有的数据类型都会被检测一遍,以保证类型安全,避免崩溃问题。
无侵入性: 模型无需继承自其他基类。
轻量: 该框架只有 5 个文件 (包括.h文件)。
文档和单元测试: 文档覆盖率100%, 代码覆盖率99.6%。
YYModel的安装
YYModel支持使用CocoaPods、Carthage以及手工方式进行安装,我们以CocoaPods为例。
在工程的Podfile中添加如下配置
pod ‘YYModel’
在终端执行如下命令执行安装操作
cd [Podfile所在的工程目录]
pod install
在需要使用YYModel的类中,导入YYModel的头文件
#import <YYModel/YYModel.h>
YYModel中的常用方法
在YYModel中,提供了用于模型对象与JSON/Dictionnary之间快速转换的方法。
根据JSON转换成为对应的模型对象。传入的JSON参数可以是NSData,NSString,NSDictionary类型的对象。
+ (nullable instancetype)yy_modelWithJSON:(id)json;
将模型Model对象转换成JSON对象
- (nullable id)yy_modelToJSONObject;
根据字典转换成模型对象。
+ (nullable instancetype)yy_modelWithDictionary:(NSDictionary *)dictionary;
举例
本节通过一个简单的案例介绍YYModel的简单使用,包括使用YYModel的字典转模型、模型转JSON以及JSON转模型的使用方法。
准备工作
首先使用CocoaPods导入YYModel框架。
在工程中,新建一个WebSite类,并在其中添加3个属性。
@interface WebSite : NSObject
@property (nonatomic,copy) NSString *url;
@property (nonatomic,copy) NSString *name;
@property (nonatomic,copy) NSNumber *foundedYear;
@end
#import "WebSite.h"
-(void)YYModelTest{
//创建原始字典
NSDictionary *dict=@{@"url":@"https://github.com/ShaeZhuJiu",
@"name":@"Shae",
@"foundedYear":@"2019"
};
//字典转模型
WebSite *webSite1=[WebSite yy_modelWithDictionary:dict];
NSLog(@"----字典转模型----");
NSLog(@"url:%@,name:%@,foundedYear:%@",webSite1.url,webSite1.name,webSite1.foundedYear);
//模型转json
NSDictionary *json=[webSite1 yy_modelToJSONObject];
NSLog(@"---模型转json---");
NSLog(@"%@",json);
//json转模型
WebSite *website2=[WebSite yy_modelWithJSON:json];
NSLog(@"---json转模型---");
NSLog(@"%@,%@,%@",website2.url,website2.name,website2.foundedYear);
}
代码
https://github.com/ShaeZhuJiu/YYMode_base.git