MJExtension能做什么?
- MJExtension是一套字典和模型之間互相轉換的超輕量級框架
-
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