Swift环境下使用MJExtension

最近开始学习swift3.0的新特性
由于是从OC转过来的
所以对MJExtension和ESJsonFormat很有感情
这里分享一下如何在swift环境下使用MJExtension

所用技术

  • swift
  • MJExtension
  • ESJsonFormat
  • Alamofire
  • SwiftyJSON

安装

使用pod安装 这里有几个坑

  1. 注意Podfile中加入一行
use_frameworks!

完整的podfile例

platform :ios, ‘8.0’
use_frameworks!

target ‘SwiftDemo’ do
pod 'Alamofire', '~> 4.5.0'
pod 'SwiftyJSON', '~> 3.1.4'

pod 'MJExtension', '~> 3.0.13'
pod 'SVProgressHUD', '~> 2.0.3'
end
  1. 添加Briding-Header.h文件以便引用OC的类
    创建一个.h文件 如Objc-Briding-Header.h
    Apple建议使用-Briding-Header字段作为后缀 这里果断就听苹果爸爸的话了
    在里面import需要的OC的类
    坑:
  • 这里的#import 没有代码提示
    且无论是否是什么类型的类 都用
#import"xxxx.h"

而不用

#import<xxxx.h>

例如 完整的Briding-Header.h

#ifndef Objc_Briding_Header_h
#define Objc_Briding_Header_h

#import "SVProgressHUD.h"
#import "MJExtension.h"

//model
#import "DemoModelOne.h"

#endif /* Objc_Briding_Header_h */
  • import之后需要进行一些设置
  1. 在target——>build setting中搜索bridg 把Objective-C Bridging Header路径设置一下,一定要设置对,如果你的桥接文件不是和project工程文件在同一级项目目录中,要记得把你的文件所在的目录加进路径,一定要确保根据这个路径可以找到你的桥接文件。如图


    1.png
  2. 设置一个User Header Search Paths,否则在需要用三方库的地方是调不出来的。在target——>Build Setting里找到search Paths,双击User Header Search Paths后面的空白处,设置目录路径为${SRCROOT} 后边选择recursive。如图


    2.png

使用

模型的建立

这里很多同学直接就去建了swift模型,其实这里应该使用OC模型,如果是swift模型,MJExtension可能不能完美的完成转换.而且建立OC模型,可以使用ESJsonFormat来完成,非常方便.
关于ESJsonFormat的使用,请参考ESJsonFormat github

使用Alamofire获取json

Alamofire是OC中著名开源网络框架AFNetworking的swift版本
关于Alamofire的使用,请参考Alamofire github

使用SwiftyJSON

SwiftyJSON是swift中著名的json解析工具,使用这个插件,可以让json多层连续解析而不产生crash.
关于SwiftyJSON的使用,请参考SwiftyJSON github

具体使用代码例

关于MJExtension的基本用法(OC),请参考作者的介绍MJExtension github

    func getData(_ completion:@escaping ()->Void) -> Void {
        //显示hud
        SVProgressHUD.setStatus("加载中")
        let url = "http://xxxxxx"
        Alamofire.request(url).responseJSON { (response) in
            //隐藏hud
            SVProgressHUD.dismiss()
            response.result.ifSuccess({
                //使用SwiftyJSON解析json并取数组层数据
                let json = JSON(response.data as Any)
                let jsonData = json["goodsRecommendTypeFormBeans"][0]["goodsRecommendFormList"].rawValue
                for dic in (jsonData as! Array<Any>){
                    //字典转为OC字典不然MJExtension不会进行转换
                    let nsdic = dic as! [NSObject : AnyObject]
                    //用MJExtension转成OC模型
                    let model = DemoModelOne.mj_object(withKeyValues: nsdic)
                    //把模型写入数组
                    self.dataArray.append(model!)
                }
                print(self.dataArray)
                completion()
            })
        }
    }

由此,你获得了一个装满了model的dataArray 尽情折腾吧!

相关文章

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,262评论 4 61
  • 于顾一宸 顾一宸的写作历程 6月10号的时候,我去上海签售。 在上海言几又书城长泰店,我和来到现场的众多读者分享了...
    ouxyea阅读 187评论 0 0
  • 徽杭古道行 人类最伟大的事迹就是为了生活而用生命开辟出无数著名的商道,如丝绸之路、茶马古道...
    随笔设计阅读 1,349评论 7 14