Swift3.0下MJExtension解析模型嵌套数组失败问题

2017-01-14 10:22:42来源:http://www.jianshu.com/p/a3396fdc6c52作者:丶Runs人点击

首先看下 失败的解析样本案例




图1

图2




图3

上面的写法完全是模仿OC的写法,显然是利用OC的思维去思考Swift的问题,很明显是这是欠考虑的不全面的。当然得到这种解析失败的结果也是必然的无可挑剔的。

在我看来使用图2  的写法定义数组,还是了解MJExtension的,要么就是不会写Swift数组,不过不太可能。

其次就下面的这种写法:




图4

图4这种数组定义写法 MJExtension是识别不了的,因为MJExtension是基于OC的NSArray而不是Swift的Array ,两个完全不一样的东西,前者是类后者是结构体,至于什么是结构体什么事值类型,什么是类什么是引用类型,自行百度之!虽然两这差别很大,但是Swift还是提供了方法供它俩相互转换,这也是后面正确解析也需要的。

上面讲的错误写法以及为什么错误,下面要说的就重要了(要开车了):

(经过九九八十一难,越过千山和万水,仔细看了一遍的MJExtendion源码找到一个不去换第三方库,不去手动解析,不去写OC模型的办法,依然要MJExtendion)

上图:



图5

图5的写法用到了一个NSObject+MJKeyValue.h里面的一个成员方法,看看源码介绍:




图6

诺,就这么简单杰哥注释看不懂的说明你不懂汉语,那只能再见了

很显然我知道解析会失败,退而求其次,我利用方法如图:




图7

既然我们直接转模型会失败,那么我们主动去解析一下,自己动手丰衣足食,不就OK了。因为毕竟现在MJExtension直接在Swift利用还是会存在一些小小的问题,杰哥后期也准备放出纯Swift,就目前我个人而言不怎么对其他的框架感冒。

PS:在杰哥的issue里面有另一种写法:在Swift项目中保持OC环境来使用MJExtension

这种写法大概就是模型用OC类来定义  ,然后解析就没问题了。

对于我这种强迫症洁癖神选手,Swift写的好好地  突然用OC嵌套一下,有点着急!

最后讲一个正确写法步骤:图5和图3









最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台