1.打开Xcode新建项目MoyaDemo
2.选择IOS ,Single View Application 下一步
输入项目名称:MoyaDemo
安装cocopods ,新建podfile
打开终端:cd 进入项目文件夹
运行: pod init 新建podfile文件
安装Moya第三方库:
platform :ios,'9.0'
use_frameworks!
target 'MoyaDemo' do
pod 'Moya'
end
在终端执行命令 pod install
会提示执行成功。关闭项目,重新使用.xcworkspace打开项目
封装一个用于网络访问的工具类:NetworkTools
新建文件,选择Cocoa Toutch Class NetworkTools
下一步输入 NetworkTools ,选择继承的类是NSObject 下一步
在NetworkToos 封装所有的网络请求。
实现moya的方法,遵循TargetType协议 增加一个方法,增加一个case
import UIKit
import Moya
public enum NetworkTools {
case userList
}
extension NetworkTools : TargetType {
public var baseURL: URL {
return URL(string: "http://127.0.0.1:8000/api/")!
}
public var path: String{
switch self {
case .userList:
return "/users"
}
}
public var method: Moya.Method{
switch self {
case .userList:
return .get
}
}
public var parameters: [String : Any]?{
switch self {
case .userList:
return nil
}
}
public var parameterEncoding: ParameterEncoding{
switch self {
case .userList:
return URLEncoding.default
}
}
public var sampleData: Data{
switch self {
case .userList:
return "userList test data".data(using: String.Encoding.utf8)!
}
}
public var task: Task{
switch self {
case .userList:
return .request
}
}
}
用ObjectMapper 对JSON格式进行解析
先安装 ObjectMapper
pod 'ObjectMapper'
运行pod 安装命令:
新建Model文件:User,点击新建,选择 Swift File
导入ObjectMapper库,通过JSON字段来编写解析字段:
参考:https://github.com/Hearst-DD/ObjectMapper 编写解析
在storyboard里拉一个按钮,点击测试获取json解析
编写方法:
import UIKitimport Moyaclass MainViewController: UIViewController { @IBAction func getUser_btn(_ sender: UIButton) { getUserList() } func getUserList() { let provider = MoyaProvider()
provider.request(.userList) { (result) in
switch result {
case let .success(moyaResponse):
//将请求结果转化成字典
let json = try!moyaResponse.mapJSON() as! [String:Any]
//实例化一个User的模型对象
if let jsonRespones = UserListResponse(JSON:json ){
print(jsonRespones.count,jsonRespones.userList)
}
case.failure:
print("网络错误")
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
运行提示网络错误:
苹果默认https协议
参考文章:
https://github.com/Moya/Moya/tree/master/docs
https://github.com/Moya/Moya/blob/master/docs/Targets.md