1、功能介绍
YYModel是高性能 iOS/OSX 模型转换框架。
(该项目是 YYKit 组件之一)
2、特性
-
高性能: 模型转换性能接近手写解析代码。
-
自动类型转换: 对象类型可以自动转换,详情见下方表格。
-
类型安全: 转换过程中,所有的数据类型都会被检测一遍,以保证类型安全,避免崩溃问题。
-
无侵入性: 模型无需继承自其他基类。
-
轻量: 该框架只有 5 个文件 (包括.h文件)。
-
文档和单元测试: 文档覆盖率100%, 代码覆盖率99.6%。
3、使用方法
简单的 Model 与 JSON 相互转换
// JSON:
{
"uid":123456,
"name":"Harry",
"created":"1965-07-31T00:00:00+0000"
}
// Model:
@interface User : NSObject
@property UInt64 uid;
@property NSString *name;
@property NSDate *created;
@end
@implementation User
@end
// 将 JSON (NSData,NSString,NSDictionary) 转换为 Model:
User *user = [User yy_modelWithJSON:json];
// 将 Model 转换为 JSON 对象:
NSDictionary *json = [user yy_modelToJSONObject];
Model 属性名和 JSON 中的 Key 不相同
// JSON:
{
"n":"Harry Pottery",
"p": 256,
"ext" : {
"desc" : "A book written by J.K.Rowing."
},
"ID" : 100010
}
// Model:
@interface Book : NSObject
@property NSString *name;
@property NSInteger page;
@property NSString *desc;
@property NSString *bookID;
@end
@implementation Book
//返回一个 Dict,将 Model 属性名对映射到 JSON 的 Key。
+ (NSDictionary *)modelCustomPropertyMapper {
return @{@"name" : @"n",
@"page" : @"p",
@"desc" : @"ext.desc",
@"bookID" : @[@"id",@"ID",@"book_id"]};
}
@end
4、组件接入方式
CocoaPods
1.在 Podfile 中添加 pod 'YYModel'。
2.执行 pod install 或 pod update。
3.导入 <YYModel/YYModel.h>。
5、注意事项
-
在 Cartfile 中添加 github "ibireme/YYModel"。
-
执行 carthage update --platform ios 并将生成的 framework 添加到你的工程。
-
导入 <YYModel/YYModel.h>。
6、版本历史记录
1.版本1.0.0增加XXX
2.版本2.0.0增加XXX
3.版本3.0.0增加XXX
7、其他
网友评论