框架下載地址是:
https://github.com/makeLaugh/MJExtension
這邊主要的一個示例是將一個從web上面取到的json字符竄轉化成model的一個流程,開始集成吧。
1)下載解壓
2)添加到新的項目中
3)導入頭文件后,開始使用這個文件,這邊是從web上面取得的一個數據,直接映射成一個model對象
這里只是其中的一個使用方法,更多的方法可以查看其下載文件中的main方便中的更加詳細的調用 。
//
// main.m
// 字典與模型的互轉
//
// Created by MJ Lee on 14-5-21.
// Copyright (c) 2014年 itcast. All rights reserved.
//
/* *
MJ友情提醒:
1.MJExtension是一套“字典和模型之間互相轉換”的輕量級框架
2.MJExtension能完成的功能
* 字典 --> 模型
* 模型 --> 字典
* 字典數組 --> 模型數組
* 模型數組 --> 字典數組
3.具體用法主要參考 main.m中各個函數 以及 "NSObject+MJKeyValue.h"
4.希望各位大神能用得爽
*/
#import <Foundation/Foundation.h>
#import " MJExtension.h "
#import " User.h "
#import " Status.h "
#import " StatusResult.h "
/* *
* 簡單的字典 -> 模型
*/
void keyValues2object()
{
// 1.定義一個字典
NSDictionary *dict = @{
@" name " : @" Jack ",
@" icon " : @" lufy.png ",
};
// 2.將字典轉為User模型
User *user = [User objectWithKeyValues: @" 44 "];
// 3.打印User模型的屬性
NSLog( @" name=%@, icon=%@ ", user.name, user.icon);
}
/* *
* 復雜的字典 -> 模型 (模型里面包含了模型)
*/
void keyValues2object2()
{
// 1.定義一個字典
NSDictionary *dict = @{
@" text " : @" 是啊,今天天氣確實不錯! ",
@" user " : @{
@" name " : @" Jack ",
@" icon " : @" lufy.png "
},
@" retweetedStatus " : @{
@" text " : @" 今天天氣真不錯! ",
@" user " : @{
@" name " : @" Rose ",
@" icon " : @" nami.png "
}
}
};
// 2.將字典轉為Status模型
Status *status = [Status objectWithKeyValues:dict];
// 3.打印status的屬性
NSString *text = status.text;
NSString *name = status.user.name;
NSString *icon = status.user.icon;
NSLog( @" text=%@, name=%@, icon=%@ ", text, name, icon);
// 4.打印status.retweetedStatus的屬性
NSString *text2 = status.retweetedStatus.text;
NSString *name2 = status.retweetedStatus.user.name;
NSString *icon2 = status.retweetedStatus.user.icon;
NSLog( @" text2=%@, name2=%@, icon2=%@ ", text2, name2, icon2);
}
/* *
* 復雜的字典 -> 模型 (模型的數組屬性里面又裝着模型)
*/
void keyValues2object3()
{
// 1.定義一個字典
NSDictionary *dict = @{
@" statuses " : @[
@{
@" text " : @" 今天天氣真不錯! ",
@" user " : @{
@" name " : @" Rose ",
@" icon " : @" nami.png "
}
},
@{
@" text " : @" 明天去旅游了 ",
@" user " : @{
@" name " : @" Jack ",
@" icon " : @" lufy.png "
}
},
@{
@" text " : @" 嘿嘿,這東西不錯哦! ",
@" user " : @{
@" name " : @" Jim ",
@" icon " : @" zero.png "
}
}
],
@" totalNumber " : @" 2014 ",
@" previousCursor " : @" 13476589 ",
@" nextCursor " : @" 13476599 "
};
// 2.將字典轉為StatusResult模型
StatusResult *result = [StatusResult objectWithKeyValues:dict];
// 3.打印StatusResult模型的簡單屬性
NSLog( @" totalNumber=%d, previousCursor=%lld, nextCursor=%lld ", result.totalNumber, result.previousCursor, result.nextCursor);
// 4.打印statuses數組中的模型屬性
for (Status *status in result.statuses) {
NSString *text = status.text;
NSString *name = status.user.name;
NSString *icon = status.user.icon;
NSLog( @" text=%@, name=%@, icon=%@ ", text, name, icon);
}
}
/* *
* 字典數組 -> 模型數組
*/
void keyValuesArray2objectArray()
{
// 1.定義一個字典數組
NSArray *dictArray = @[
@{
@" name " : @" Jack ",
@" icon " : @" lufy.png ",
},
@{
@" name " : @" Rose ",
@" icon " : @" nami.png ",
},
@{
@" name " : @" Jim ",
@" icon " : @" zero.png ",
}
];
// 2.將字典數組轉為User模型數組
NSArray *userArray = [User objectArrayWithKeyValuesArray:dictArray];
// 3.打印userArray數組中的User模型屬性
for (User *user in userArray) {
NSLog( @" name=%@, icon=%@ ", user.name, user.icon);
}
}
/* *
* 模型 -> 字典
*/
void object2keyValues()
{
// 1.新建模型
User *user = [[User alloc] init];
user.name = @" Jack ";
user.icon = @" lufy.png ";
Status *status = [[Status alloc] init];
status.user = user;
status.text = @" 今天的心情不錯! ";
// 2.將模型轉為字典
// NSDictionary *dict = [status keyValues];
NSDictionary *dict = status.keyValues;
NSLog( @" %@ ", dict);
}
/* *
* 模型數組 -> 字典數組
*/
void objectArray2keyValuesArray()
{
// 1.新建模型數組
User *user1 = [[User alloc] init];
user1.name = @" Jack ";
user1.icon = @" lufy.png ";
User *user2 = [[User alloc] init];
user2.name = @" Rose ";
user2.icon = @" nami.png ";
User *user3 = [[User alloc] init];
user3.name = @" Jim ";
user3.icon = @" zero.png ";
NSArray *userArray = @[user1, user2, user3];
// 2.將模型數組轉為字典數組
NSArray *dictArray = [User keyValuesArrayWithObjectArray:userArray];
NSLog( @" %@ ", dictArray);
}
int main( int argc, const char * argv[])
{
@autoreleasepool {
// 簡單的字典 -> 模型
// keyValues2object();
// 復雜的字典 -> 模型 (模型里面包含了模型)
keyValues2object2();
// 復雜的字典 -> 模型 (模型的數組屬性里面又裝着模型)
// keyValues2object3();
// 字典數組 -> 模型數組
// keyValuesArray2objectArray();
// 模型轉字典
// object2keyValues();
// 模型數組 -> 字典數組
// objectArray2keyValuesArray();
}
return 0;
}
// main.m
// 字典與模型的互轉
//
// Created by MJ Lee on 14-5-21.
// Copyright (c) 2014年 itcast. All rights reserved.
//
/* *
MJ友情提醒:
1.MJExtension是一套“字典和模型之間互相轉換”的輕量級框架
2.MJExtension能完成的功能
* 字典 --> 模型
* 模型 --> 字典
* 字典數組 --> 模型數組
* 模型數組 --> 字典數組
3.具體用法主要參考 main.m中各個函數 以及 "NSObject+MJKeyValue.h"
4.希望各位大神能用得爽
*/
#import <Foundation/Foundation.h>
#import " MJExtension.h "
#import " User.h "
#import " Status.h "
#import " StatusResult.h "
/* *
* 簡單的字典 -> 模型
*/
void keyValues2object()
{
// 1.定義一個字典
NSDictionary *dict = @{
@" name " : @" Jack ",
@" icon " : @" lufy.png ",
};
// 2.將字典轉為User模型
User *user = [User objectWithKeyValues: @" 44 "];
// 3.打印User模型的屬性
NSLog( @" name=%@, icon=%@ ", user.name, user.icon);
}
/* *
* 復雜的字典 -> 模型 (模型里面包含了模型)
*/
void keyValues2object2()
{
// 1.定義一個字典
NSDictionary *dict = @{
@" text " : @" 是啊,今天天氣確實不錯! ",
@" user " : @{
@" name " : @" Jack ",
@" icon " : @" lufy.png "
},
@" retweetedStatus " : @{
@" text " : @" 今天天氣真不錯! ",
@" user " : @{
@" name " : @" Rose ",
@" icon " : @" nami.png "
}
}
};
// 2.將字典轉為Status模型
Status *status = [Status objectWithKeyValues:dict];
// 3.打印status的屬性
NSString *text = status.text;
NSString *name = status.user.name;
NSString *icon = status.user.icon;
NSLog( @" text=%@, name=%@, icon=%@ ", text, name, icon);
// 4.打印status.retweetedStatus的屬性
NSString *text2 = status.retweetedStatus.text;
NSString *name2 = status.retweetedStatus.user.name;
NSString *icon2 = status.retweetedStatus.user.icon;
NSLog( @" text2=%@, name2=%@, icon2=%@ ", text2, name2, icon2);
}
/* *
* 復雜的字典 -> 模型 (模型的數組屬性里面又裝着模型)
*/
void keyValues2object3()
{
// 1.定義一個字典
NSDictionary *dict = @{
@" statuses " : @[
@{
@" text " : @" 今天天氣真不錯! ",
@" user " : @{
@" name " : @" Rose ",
@" icon " : @" nami.png "
}
},
@{
@" text " : @" 明天去旅游了 ",
@" user " : @{
@" name " : @" Jack ",
@" icon " : @" lufy.png "
}
},
@{
@" text " : @" 嘿嘿,這東西不錯哦! ",
@" user " : @{
@" name " : @" Jim ",
@" icon " : @" zero.png "
}
}
],
@" totalNumber " : @" 2014 ",
@" previousCursor " : @" 13476589 ",
@" nextCursor " : @" 13476599 "
};
// 2.將字典轉為StatusResult模型
StatusResult *result = [StatusResult objectWithKeyValues:dict];
// 3.打印StatusResult模型的簡單屬性
NSLog( @" totalNumber=%d, previousCursor=%lld, nextCursor=%lld ", result.totalNumber, result.previousCursor, result.nextCursor);
// 4.打印statuses數組中的模型屬性
for (Status *status in result.statuses) {
NSString *text = status.text;
NSString *name = status.user.name;
NSString *icon = status.user.icon;
NSLog( @" text=%@, name=%@, icon=%@ ", text, name, icon);
}
}
/* *
* 字典數組 -> 模型數組
*/
void keyValuesArray2objectArray()
{
// 1.定義一個字典數組
NSArray *dictArray = @[
@{
@" name " : @" Jack ",
@" icon " : @" lufy.png ",
},
@{
@" name " : @" Rose ",
@" icon " : @" nami.png ",
},
@{
@" name " : @" Jim ",
@" icon " : @" zero.png ",
}
];
// 2.將字典數組轉為User模型數組
NSArray *userArray = [User objectArrayWithKeyValuesArray:dictArray];
// 3.打印userArray數組中的User模型屬性
for (User *user in userArray) {
NSLog( @" name=%@, icon=%@ ", user.name, user.icon);
}
}
/* *
* 模型 -> 字典
*/
void object2keyValues()
{
// 1.新建模型
User *user = [[User alloc] init];
user.name = @" Jack ";
user.icon = @" lufy.png ";
Status *status = [[Status alloc] init];
status.user = user;
status.text = @" 今天的心情不錯! ";
// 2.將模型轉為字典
// NSDictionary *dict = [status keyValues];
NSDictionary *dict = status.keyValues;
NSLog( @" %@ ", dict);
}
/* *
* 模型數組 -> 字典數組
*/
void objectArray2keyValuesArray()
{
// 1.新建模型數組
User *user1 = [[User alloc] init];
user1.name = @" Jack ";
user1.icon = @" lufy.png ";
User *user2 = [[User alloc] init];
user2.name = @" Rose ";
user2.icon = @" nami.png ";
User *user3 = [[User alloc] init];
user3.name = @" Jim ";
user3.icon = @" zero.png ";
NSArray *userArray = @[user1, user2, user3];
// 2.將模型數組轉為字典數組
NSArray *dictArray = [User keyValuesArrayWithObjectArray:userArray];
NSLog( @" %@ ", dictArray);
}
int main( int argc, const char * argv[])
{
@autoreleasepool {
// 簡單的字典 -> 模型
// keyValues2object();
// 復雜的字典 -> 模型 (模型里面包含了模型)
keyValues2object2();
// 復雜的字典 -> 模型 (模型的數組屬性里面又裝着模型)
// keyValues2object3();
// 字典數組 -> 模型數組
// keyValuesArray2objectArray();
// 模型轉字典
// object2keyValues();
// 模型數組 -> 字典數組
// objectArray2keyValuesArray();
}
return 0;
}