iOS-MJExtension的使用

MJExtension能做什么?

  1. MJExtension是一套字典和模型之间互相转换的超轻量级框架
  2. MJExtension能完成的功能

     字典(JSON) --> 模型(Model)
     模型(Model) --> 字典(JSON)
     字典数组(JSON Array) --> 模型数组(Model Array)
     模型数组(Model Array) --> 字典数组(JSON Array)

MJExtension和JSONModel、Mantle等框架的区别

1. 转换速率:

最近一次测试表明:MJExtension > JSONModel > Mantle

各位开发者也可以自行测试

2.具体用法:

JSONModel

要求所有模型类必须继承自JSONModel基类

Mantle

要求所有模型类必须继承自MTModel基类

MJExtension

不需要你的模型类继承任何特殊基类,毫无污染,毫无侵入性

如何使用MJExtension

方法一:cocoapods导入pod 'MJExtension'

方法二:手动导入

将MJExtensionExample/MJExtensionExample/MJExtension文件夹中的所有源代码拽入项目中
导入主头文件:#import "MJExtension.h"
MJExtension.h
MJConst.h               
MJConst.m
MJFoundation.h               
MJFoundation.m
MJIvar.h               
MJIvar.m
MJType.h                
MJType.m
NSObject+MJCoding.h     
NSObject+MJCoding.m
NSObject+MJIvar.h       
NSObject+MJIvar.m
NSObject+MJKeyValue.h   
NSObject+MJKeyValue.m

最简单的字典转模型: objectWithKeyValues:

模型中嵌套模型

.模型中有个数组属性,数组里面又要装着其它模型:在模型内部实现+ (NSDictionary *)objectClassInArray方法

模型中的属性名和字典中的key不相同(或者需要多级映射)

将一个字典数组转成模型数组:objectArrayWithKeyValuesArray:

将一个模型转成字典:

// 新建模型
  User *user = [[User alloc] init];
user.name = @"Jack";
user.icon = @"lufy.png";

Status *status = [[Status alloc] init];
status.user = user;
status.text = @"今天的心情不错!";


// 将模型转为字典
NSDictionary *statusDict = status.keyValues;

将一个模型数组转成字典数组:

// 新建模型数组
  User *user1 = [[User alloc] init];
user1.name = @"Jack";
user1.icon = @"lufy.png";

User *user2 = [[User alloc] init];
user2.name = @"Rose";
user2.icon = @"nami.png";

NSArray *userArray = @[user1, user2];
// 将模型数组转为字典数组
NSArray *dictArray = [User keyValuesArrayWithObjectArray:userArray];
NSLog(@"%@", dictArray);
/*(    
{        icon = "lufy.png";        name = Jack;    },    
{        icon = "nami.png";        name = Rose;    }  )*/

核心代码7:

[User keyValuesArrayWithObjectArray:userArray]
 链接地址:https://github.com/CoderMJLee/MJExtension
原文地址:https://www.cnblogs.com/linxiu-0925/p/5363262.html