MJExtension字典和模型之间相互转换的轻量级框架的使用实例

本文介绍了一个轻量级的iOS框架MJExtension,该框架主要用于实现字典与模型之间的互相转换。文章通过多个示例展示了如何使用MJExtension进行模型的创建与转换,包括简单的字典到模型的转换、复杂的嵌套模型转换以及模型数组的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

框架下载地址是:

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值