前言
MJExtension是一套“字典和模型之间互相转换”的轻量级框架
GitHub地址:https://github.com/CoderMJLee/MJExtension
MJExtension能完成的功能
- 字典 –> 模型
- 模型 –> 字典
- 字典数组 –> 模型数组
模型数组 –> 字典数组
具体用法主要参考 “NSObject+MJKeyValue.h”
实例
1.简单的字典 -> 模型
//
// MJUser.h
// 字典与模型的互转
// 用户模型
//
#import <Foundation/Foundation.h>
typedef enum {
SexMale,
SexFemale
} Sex;
@interface MJUser : NSObject
/** 名称 */
@property (copy, nonatomic) NSString *name;
/** 头像 */
@property (copy, nonatomic) NSString *icon;
/** 年龄 */
@property (assign, nonatomic) unsigned int age;
/** 身高 */
@property (strong, nonatomic) NSNumber *height;
/** 财富 */
@property (strong, nonatomic) NSDecimalNumber *money;
/** 性别 */
@property (assign, nonatomic) Sex sex;
/** 同性恋 */
@property (assign, nonatomic, getter=isGay) BOOL gay;
@end
/**
* 简单的字典 -> 模型
*/
void keyValues2object()
{
// 1.定义一个字典
NSDictionary *dict = @{
@"name" : @"Jack",
@"icon" : @"lufy.png",
@"age" : @"20",
@"height" : @1.55,
@"money" : @"100.9",
@"sex" : @(SexFemale),
@"gay" : @"1"
// @"gay" : @"NO"
// @"gay" : @"true"
};
// 2.将字典转为MJUser模型
MJUser *user = [MJUser mj_objectWithKeyValues:dict];
// 3.打印MJUser模型的属性
MJExtensionLog(@"name=%@, icon=%@, age=%zd, height=%@, money=%@, sex=%d, gay=%d", user.name, user.icon, user.age, user.height, user.money, user.sex, user.gay);
}
2.JSON字符串 -> 模型
/**
* JSON字符串 -> 模型
*/
void keyValues2object1()
{
// 1.定义一个JSON字符串
NSString *jsonString = @"{\"name\":\"Jack\", \"icon\":\"lufy.png\", \"age\":20, \"height\":333333.7}";
// 2.将JSON字符串转为MJUser模型
MJUser *user = [MJUser mj_objectWithKeyValues:jsonString];
// 3.打印MJUser模型的属性
MJExtensionLog(@"name=%@, icon=%@, age=%d, height=%@", user.name, user.icon, user.age, user.height);
}
3.复杂的字典 -> 模型 (模型里面包含了模型)
//
// MJStatus.h
// 字典与模型的互转
// 微博模型
//
#import <Foundation/Foundation.h>
@class MJUser;
@interface MJStatus : NSObject
/** 微博文本内容 */
@property (copy, nonatomic) NSString *text;
/** 微博作者 */
@property (strong, nonatomic) MJUser *user;
/** 转发的微博 */
@property (strong, nonatomic) MJStatus *retweetedStatus;
@end
/**
* 复杂的字典 -> 模型 (模型里面包含了模型)
*/
void keyValues2object2()
{
// 1.定义一个字典
NSDictionary *dict = @{
@"text" : @"是啊,今天天气确实不错!",
@"user" : @{
@"name" : @"Jack",
@"icon" : @"lufy.png"
},
@"retweetedStatus" : @{
@"text" : @"今天天气真不错!",
@"user" : @{
@"name" : @"Rose",
@"icon" : @"nami.png"
}
}
};
// 2.将字典转为Status模型
MJStatus *status = [MJStatus mj_objectWithKeyValues: