首先我从网络上下载了liwushuo.ipa文件,通过解包得到里面的资源文件,后来我发现里面的图片并不全,找不到我想要的那几张图片,慢慢地我发现了一个名为assert.car的文件,通过Google得知这个是一个特殊的压缩文件,需要通过特定的工具可以进行解压,具体方法在如下网址,我使用Xcode编译好文件后,在用终端调用编译好的文件进行解包,放到指定的文件夹,然后洪荒之力得到解放,里面的图片全都尽收囊中。
从assert.car中解压得到图片的方法
http://blog.csdn.net/donwei8/article/details/52161384
我创建了一个名为Gift的工程,我用storyboard创建了四个TabBar,每个TabBar又嵌套了一个navigationbar,每个TabBar的图标设置未选中图片和已选中图片,并且通过增加tintColor的方法改变其选中时的颜色,而不是默认时的蓝色,导航栏的颜色我本来也想直接在storyboard中设置,通过设置背景颜色的功能时,我发现设置好的颜色是渐变的,并不能得到我预想的纯色的效果,这个方法行不通之后,我考虑到可能其他的界面也需要这样一个设置,所以我创建了一个GiftNavigationController的类,用来存放navigation的界面设置,并将每一个需要的navigation与这个控制器进行绑定,来达到共同设置的效果。这里用了一个取巧的方法,我把一个相同颜色的纯色图片直接当做背景放上去,就可以替换成自己喜欢的颜色啦。另外,我改变了状态栏的样式,将其改为UIBarStyleBlack,这样子的改变会影响状态栏中字的颜色,会变成白色。实现后的效果如下。
整体的框架已经搭好,那么我们需要从官方的应用中获取到响应的JSON数据,就需要用到抓包软件,我使用的抓包软件是Paros,具体使用方法:http://jingyan.baidu.com/article/a3a3f811ebbd2d8da2eb8ac1.html
获取到的JSON数据网址
精选头部图片
http://api.liwushuo.com/v2/secondary_banners?gender=1&generation=2
精选轮播图片
http://api.liwushuo.com/v2/banners?channel=iO
精选
http://api.liwushuo.com/v2/channels/101/items_v2?ad=2&gender=1&generation=2&limit=20&offset=0
送女票
http://api.liwushuo.com/v2/channels/10/items_v2?gender=1&generation=2&limit=20&offset=0
海淘
http://api.liwushuo.com/v2/channels/129/items_v2?gender=1&generation=2&limit=20&offset=0
创意生活
http://api.liwushuo.com/v2/channels/125/items_v2?gender=1&generation=2&limit=20&offset=0
送基友
http://api.liwushuo.com/v2/channels/26/items_v2?gender=1&generation=2&limit=20&offset=0
送爸妈
http://api.liwushuo.com/v2/channels/6/items_v2?gender=1&generation=2&limit=20&offset=0
送同事
http://api.liwushuo.com/v2/channels/17/items_v2?gender=1&generation=2&limit=20&offset=0
送宝贝
http://api.liwushuo.com/v2/channels/24/items_v2?gender=1&generation=2&limit=20&offset=0
设计感
http://api.liwushuo.com/v2/channels/127/items_v2?gender=1&generation=2&limit=20&offset=0
文艺风
http://api.liwushuo.com/v2/channels/14/items_v2?gender=1&generation=2&limit=20&offset=0
奇葩搞怪
http://api.liwushuo.com/v2/channels/126/items_v2?gender=1&generation=2&limit=20&offset=0
科技范
http://api.liwushuo.com/v2/channels/28/items_v2?gender=1&generation=2&limit=20&offset=0
萌萌哒
http://api.liwushuo.com/v2/channels/11/items_v2?gender=1&generation=2&limit=20&offset=0
热门
http://api.liwushuo.com/v2/items?gender=1&generation=2&limit=50&offset=0
分类
热词
http://api.liwushuo.com/v2/search/hot_words
品类 风格 对象
http://api.liwushuo.com/v2/channel_groups/all
栏目
http://api.liwushuo.com/v2/columns?limit=11&offset=0
单品
http://api.liwushuo.com/v2/item_categories/tree
仔细观察这些API,可以发现有几个是相类似的,仅仅几个数字不一样,那么就可以放在一起进行解析。
下面进行网络层的编写,首先需要一个基础的网络层BaseNetworkManager作为父类,子类通过继承父类来获得父类的功能,子类可以自己添加自己独有的功能。此处发现少引入了一个名为CocoaLumberjack的第三方库,这是一个可以搭建自己日志的第三方框架。将CocoaLumberjack添加进podfile之后,因为有墙的缘故,我们需要使用 pod install --no-repo-update这条命令来更新pod库。用单例实现一个sharedAFManager,然后对GET和POST方法进行实现,完成对于基础网络层BaseNetworkManager的编写。
通过获取到的JSON数据,我们使用一款名为VisualJSON的软件进行解析,我们需要对获取到的每一个数据建立一个相应的模型与之对应,一般来说,通过看到一个字典,新建一个子类的方法进行解析。