美文网首页
Swift 编写APP Django提供API 学习 -2.前端

Swift 编写APP Django提供API 学习 -2.前端

作者: whong736 | 来源:发表于2017-07-12 07:41 被阅读32次

    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

    相关文章

      网友评论

          本文标题:Swift 编写APP Django提供API 学习 -2.前端

          本文链接:https://www.haomeiwen.com/subject/pjvvhxtx.html