iOS Swift AFNetWAorking使用

2017年11月22日 10:02:55 陈世流年 阅读数:761

https://blog.csdn.net/wangqinglei0307/article/details/78599352

今天向大家简单的介绍一下,大家最关心的网络请求AFNetWorking在swift中如何使用,网上有很多swift使用AFNetWAorking的使用方法,但是我们用的时候就会出现错误,因为我们无法继承AFHTTPSessionManager这个类,出现use of undeclared type ‘AFHTTPSessionManager’这个问题,但是他们却没有给出,这个问题的解决方案,可能对有一些swift开发的人知道如何解决,但是还是有人并不了解,下面就是这个问题的解决方案

首先,你要创建一个类.swift文件继承 

AFHTTPSessionManager

这个时候会出现一个错误

use of undeclared type ‘AFHTTPSessionManager’

那么如何解决呢?

桥接文件:
桥接文件“ProjectName-Bridging-Header.h”,在首次创建其他文件的时候,会自动生成。如果不小心删除后,也可以手动添加,不过名字必须是“ProjectName-Bridging-Header.h”头文件(名称组成:工程名-Bridging-Header.h),如果名字记不清也可以自己新建Header file后,在Targets-->Build Settings-->Swift Compiler - General-->Objective-C Bridging Header配置文件路径,这个文件主要是Swift使用OC类时使用。

效果如下:

//

//  NetRequstClass.swift

//  XueYiChe

//

//  Created by wql on 2017/11/22.

//  Copyright © 2017年 wql. All rights reserved.

//

import UIKit

enum HTResqustMethod : String {

    

    case Post = "post"

    case Get = "get"

}

class NetRequstClass: AFHTTPSessionManager {

    static let shardTools : NetRequstClass = {

        

        let tools = NetRequstClass()

        tools.responseSerializer.acceptableContentTypes?.insert("text/html")

        tools.responseSerializer.acceptableContentTypes?.insert("text/plain")

        return tools

    }()

    

    

    

    

    func request(method: HTResqustMethod , urlString: String, parameters: AnyObject?,resultBlock : @escaping([String : Any]?, Error?) -> ()){

        

        // 定义一个请求成功之后要执行的闭包

        // 成功闭包

        let successBlock = { (task: URLSessionDataTask, responseObj: Any?) in

            resultBlock(responseObj as? [String : Any], nil)

        }

        

        // 失败的闭包

        let failureBlock = { (task: URLSessionDataTask?, error: Error) in

            resultBlock(nil, error)

        }

        

        // Get 请求

        if method == .Get {

            get(urlString, parameters: parameters, progress: nil, success: successBlock, failure: failureBlock)

        }

        

        // Post 请求

        if method == .Post {

            post(urlString, parameters: parameters, progress: nil, success: successBlock, failure: failureBlock)

        }

        

        

    }

}

这个代码是调用
        

        let parameters = [

            "area_id": 1001191000,

        ]

         let kUrl = "http://api.********.cn/mg/driverinfo/countyarea.do"


        NetRequstClass.shardTools.request(method: .Post, urlString: kUrl, parameters: parameters as AnyObject?) { (responseObject, error) in

            if error != nil {

                print(error!)

                return

            }

            guard (responseObject as [String : AnyObject]?) != nil else{

                return

            }

            let dic:NSDictionary = responseObject! as NSDictionary

            print(dic)

        }

    }

下面这些是,OC使用swift文件

2. Objective-C Generated Interface Header Name文件
这个文件是混编时,系统生成的Swift文件对应的Objective-C的头文件,具体可以在Targets-->Build Settings-->Swift Compiler - General-->Objective-C Generated Interface Header Name进行配置,默认文件名是工程名-Swift.h,一般不做改动。

在Objective - C工程或者文件使用Swift的文件

当在OC文件中调用Swift文件中的类的时候,首先在OC文件中要加上 #import "
ProjectName-swift.h”(名字组成:工程名-swift)

这个文件虽然在工程中看不到,但是她真实存在,编译后,你可以按住Command+单击该文件名,就会看到具体生成的代码。
引入后,具体类的使用,直接按照OC的方式使用即可。

在Swift工程或者文件使用Objective - C文件

当在Swift中使用OC文件的时候,只需在桥接文件即projectName-Bridging-Header.h文件中引入需要的头文件。
具体使用,按照对应的Swift语法结构来即可。
--------------------- 
作者:陈世流年 
来源:CSDN 
原文:https://blog.csdn.net/wangqinglei0307/article/details/78599352 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值