MJExtension

1,转换属性名称

通常模型属性的名称必须与字典或数组的名称是一致的,否则则会出错。但因为字典或数组中的某些名称会与xcode冲突,所以我们可以通过MJExtension更换模型属性名称

在模型的.m文件实现

-(NSDictionary *)replacedKeyFromPropertyName
{
    return @{@"ID":@"id",@"test":@"mytest"};
}

2,字典转模型

例子一:可以多重字典转换为模型,无论字典里面包括多少层字典
    NSDictionary *dict = @{
                           @"id" : @"123424324",
                           @"text" : @"哈哈哈哈哈,天气真好",
                           @"user" : @{
                                   @"idstr" : @"987766",
                                   @"name" : @"搞笑排行榜",
                                   @"profile_image_url" : @"http://abc.png"
                                   }
                           
                           };
    
    HWStatus *status = [HWStatus objectWithKeyValues:dict];

例子二:
@property (nonatomic, copy) NSString *name;
@property (nonatomic, strong) NSArray *books;
 NSDictionary *dict = @{
                               @"name" : @"张三",
                               @"books" : @[
                                       @{
                                           @"name" : @"葵花1",
                                           @"price" : @"10.6"
                                           },
                                       @{
                                           @"name" : @"葵花2",
                                           @"price" : @"10.9"
                                           },
                                       @{
                                           @"name" : @"葵花3",
                                           @"price" : @"17.6"
                                           },
                                       @{
                                           @"name" : @"葵花4",
                                           @"price" : @"14.4"
                                           }
                                       ]
                               
                               };
        
        HWPerson *person = [HWPerson objectWithKeyValues:dict];
因为MJ不能知道NSAarry *books这个的模型是HWBooks,所以无法NSAarry *books转为模型。即我们要告知编译器。
只要我们在HWPerson.m文件中加上下面方法。

- (NSDictionary *)objectClassInArray
{
    return @{@"books" : [HWBook class]};
}

3,字典数组转为模型数组

一个字典对应一个模型,多个字典转化为多个模型,再将所有模型加入一个数组

原理:
 //一个微博字典含有一个statuses数组,responseObject默认返回20条微博,所以dictArray有20组statuses数组
        NSArray *dictArray = responseObject[@"statuses"];
        
//statuses数组里的数据是字典,所以将字典转为模型,再将所有模型加入一个数组,方便UITableViewCell使用
        for (NSDictionary *dict in dictArray) {
            WBStatuse *status = [WBStatuse objectWithKeyValues:dict];
            [self.listArray addObject:status];
        }
封装后:
NSArray *listArray = [MyModel objectArrayWithKeyValuesArray:responseObject[@"statuses"]];

例如数据是:
{
    "statuses": [
        {
            "created_at": "Tue May 31 17:46:55 +0800 2011",
            "id": 11488058246,
            "text": "求关注。",
            "source": "<a href="http://weibo.com" rel="nofollow">新浪微博</a>",
            "favorited": false,
         }
      xxxx....
      ]
时间: 2024-10-09 16:12:46

MJExtension的相关文章

iOS开发——笔记篇&amp;关于字典plist读取/字典转模型/自定义View/MVC/Xib的使用/MJExtension使用总结

关于字典plist读取/字典转模型/自定义View/MVC/Xib的使用/MJExtension使用总结 一:Plist读取 1 /******************************************************************************/ 2 一:简单plist读取 3 4 1:定义一个数组用来保存读取出来的plist数据 5 @property (nonatomic, strong) NSArray *shops; 6 7 2:使用懒加载的方

iOS MJExtension框架之字典数组转模型数组

1.下面这样的数组,怎么转成模型     2.分析 3.新增模型:城市分组,城市,区,每个模型都有name,抽一个父类 4.每个模型分别具备的属性 BaseModel : NSObject   属性 NSString *name CitySection : BaseModel  属性 NSArray *cities City : BaseModel 属性 NSArray *districts; 属性 BOOL hot; District : BaseModel  属性  NSArray *nei

MJExtension使用指导(转)

MJExtension能做什么? MJExtension是一套字典和模型之间互相转换的超轻量级框架 MJExtension能完成的功能 字典(JSON) --> 模型(Model) 模型(Model) --> 字典(JSON) 字典数组(JSON Array) --> 模型数组(Model Array) 模型数组(Model Array) --> 字典数组(JSON Array) 详尽用法主要参考 main.m中的各个函数 以及 NSObject+MJKeyValue.h MJEx

字典转模型第三方框架---MJExtension

字典转模型第三方框架 Mantle 所有模型都必须继承自MTModel JSONModel 所有模型都必须继承自JSONModel MJExtension 不需要强制继承任何其他类 设计框架需要考虑的问题 侵入性 侵入性大就意味着很难离开这个框架 易用性 比如少量代码实现N多功能 扩展性 很容易给这个框架增加新功能 MJExtension框架在gitHub的下载地址 https://github.com/CoderMJLee/MJExtension *:first-child { margin-

MJExtension的一些实用技巧

1.在代码文件中 引入"MJExtension.h" :解决属性中的命名和服务端传过来的数据中的key不同的问题 -(NSDcitionrary *)replacedkeyFromPropertyName { // ID和mytext对应的是我们头文件中的属性名称 // id  和 text   对应的是我们数据中的key [email protected]{@"ID": @"id" ,  @"mytext" : @"

iOS开发&mdash;&mdash;MJExtension复杂数组用法

最近在看MJExtension的Demo,发现了一个plist文件直接转数组模型的方法.以前研究过但是浅尝辄止没有解决,这几天有时间,好好看了看,找到了解决办法,与大家分享. 如果大家的项目中有这种嵌套数组对象的情况的plist文件,如: 即要转换成一个对象中存有另一个对象数组的情况. 当没有这种复杂嵌套时,我们这样写: 1: -(NSArray *)groups{ 2: if (!_groups) { 3:   4: _groups = [Group objectArrayWithFilena

iOS开发小技巧--利用MJExtension解决数据结构复杂的模型转换

一.开发中难免会遇到,系统返回的数据中字典套集合,集合里面又套一层字典,然后字典里面还有字典或者集合等等的复杂结构的数据...MJExtension轻松搞定这类问题 1.解决方法一: 例:百思项目中帖子数据有个模型,模型中还有一个最热评论的集合数据,集合数据要求是ChaosComment模型数据,然后ChaosComment模型中还有一个user字典(ChaosUser模型),如图: 解决方案:利用MJExtension,实现mj_objectClassInArray方法,告诉模型中的这个集合属

MJExtension json快速解析

MJExtension 长话短说下面我们通过一个列子来看下怎么使用 1. 先把框架拉进去你的项目 2. 首先我这次用到的json最外层是一个字典,根据数据的模型我们可以把这个归类为字典中有数组,数组中还有其他 针对于这种情况 我需要建立两个数据模型 一个是要获取其中的数组 另一个数组中的的City元素 代码后面讲解思路 #import <Foundation/Foundation.h> @interface NSCity : NSObject @property (nonatomic,stro

用MJExtension简化MVC

首先引入MJExtension框架 模型 #import <Foundation/Foundation.h> @interface FundsModel : NSObject /** * 时间 */ @property (nonatomic, copy) NSString *change_time; /** * 类型 */ @property (nonatomic, copy) NSString *change_type; /** * 单元格剩余金额 */ @property (nonatom