文档章节

MJExtension解析http协议

大巴黎
 大巴黎
发布于 2016/01/22 17:06
字数 533
阅读 222
收藏 0

    首先要先了解MJExtension是什么,这里有很明确的说明,你也可以通过下载它的代码来运行里面的demo进一步了解如何使用,具体的细节不用了解很清楚,只要会用就可以了.

    使用MJExtension我们会发现,我们要手动写很多代码来定义模型(结构),还要对一些和系统关键字或者属性重名的属性进行重命名.有了ESJsonFormat-Xcode插件,我们可以在这里得到帮助,并可以测试下readMe中的demo,你会发现ESJsonFormat会为我们生产很多模型,并且是支持泛型的,但是MJExtension现在还不支持泛型.所以对于模型中存在模型数组的,还是要对数组指定类型,有两种方式

[Student mj_setupReplacedKeyFromPropertyName:^NSDictionary *{    
return @{};
}];

类似这种方式,返回一个字典,来为Student类中的属性改名

@implementation Student
+ (NSDictionary *)replacedKeyFromPropertyName {
    return @{@"desc" : @"description"
             };
}
@end

通过在类的实现文件中重写replacedKeyFromPropertyName方法,因为NSObject+MJProperty.h中对NSObject方法进行了扩展,replacedKeyFromPropertyName也是NSObject的属性了,所以通过这种方式可以对属性改名.

同理objectClassInArray属性也是一样的道理,现在objectClassInArray是一定要指定模型中数组元素的类型的,以后MJExtension支持泛型估计就不用了.

当然,通过这样的方式有时候对于复杂的jason我们不一定能够通过ESJsonFormat-Xcode一次进行完美的生产模型,这就要我们在生成的基本模型框架上进行一些校正,最后在调用的时候只要一句话

Student *stu = [Student mj_objectWithKeyValues:jason];

jason是你的数据,这里由于是id类型,也可以传字典,plist,总之,总有一款适合你.

© 著作权归作者所有

大巴黎
粉丝 3
博文 19
码字总数 13049
作品 0
广州
私信 提问
手把手教你使用MJExtension(简单使用)

一、MJExtension第三方框架 我们在iOS开发过程中,我们常常需要将字典数据(也就是JSON数据)与Model模型之间的转化,例如网络请求返回的微博数据、等等,如果我们自己全部手动去创建模型并赋值...

贝勒老爷
2018/08/15
0
0
关于JSONModel和MJExtension的性能对比

最初我在微博上看到MJExtension的发布的时候,声称它比其他JSONModel等其他Data model快上好多倍,当时我正在用JSONModel,感觉这个事情很神奇,但是一直没有去看看MJExtension具体是怎么做到...

贝勒老爷
2018/08/15
0
0
IOS 字典模型互转框架 MJExtension

详细轻参考:https://github.com/CoderMJLee/MJExtension 功能很牛掰 能做什么? MJExtension是一套的超轻量级框架 MJExtension能完成的功能 --> --> --> --> 详尽用法主要参考 main.m中的各...

卧龙小
2015/04/07
0
1
解决后台json数据返回的字段需要替换的问题

  有时候后台json数据返回的字段含有“id”,也有可能是有时候为了减少代码的冗余,两页面之间只是数据模型个别属性的区别,所以这时候最好是用到模型属性的替换,用新的属性替换返回的jso...

菁欣
2018/07/27
0
0
MJExtension源码学习(二)

接上篇MJExtension源码学习(一) 总览 这一次我们来看MJExtension最新版本的代码,当前最新为3.0.15 在看源码之前,注意MJExtensionConfig这个类。因为它重写了+load方法,然后把使用的mod...

Sunxb
2018/06/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Issue和PR标签(Kubernetes社区Issue和PR标签解释)

一般标签 标签 含义 备注 good first issue 指示该issue适合由新贡献者参与 参照"help wanted"指导文档 help wanted 指示该issue需要帮助 必须满足"help wanted"指导文档 needs-kind 指示该i......

恋恋美食
33分钟前
0
0
Array数组操作

includes() 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。 Eg:error.message.includes('timeout'); 1、indexOfindexOf()方法返回在该数组中第一...

lslaiwy
58分钟前
1
0
运行pipenv报错UnicodeDecodeError的问题

问题:运行pipenv就报错:UnicodeDecodeError: 'utf-8' codec can't decode ...... 环境:windows10,python 3.7.1 解决:因为升级了一次3.7.3恰好有出了这问题,结果绕了很多弯路,以为是p...

编程老陆
今天
0
0
Android7.1 recent过滤指定应用

systemui/recents/model/RecentsTaskLoadPlan.java 找到 preloadPlan方法 /* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version......

安卓工程师王恒
今天
2
0
为什么Map桶中个数超过8才转为红黑树

要弄明白这个问题,我们首先要明白为什么要转换,这个问题比较简单,因为Map中桶的元素初始化是链表保存的,其查找性能是O(n),而树结构能将查找性能提升到O(log(n))。当链表长度很小的时候,...

xiaomin0322
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部