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

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

AFHTTPSessionManager

这个时候会出现一个错误

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类时使用。

效果如下:


swift network swift network ack_swift network


swift network swift network ack_swift_02


swift network swift network ack_swift_03

//
 //  NetRequstClass.swift
 //  XueYiChe
 //
 //  Created by wql on 2017/11/22.
 //  Copyright © 2017年 wql. All rights reserved.
 //
 
 
 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
     }()
     
     
     
     
func request(method: HTResqustMethod , urlString: String, parameters: AnyObject?,resultBlock : @escaping([String : Any]?, Error?) -> ()){
         
        
// 成功闭包
let successBlock = { (task: URLSessionDataTask, responseObj: Any?) in
 as? [String : Any], nil)
         }
         
// 失败的闭包
let failureBlock = { (task: URLSessionDataTask?, error: Error) in
nil, error)
         }
         
        
if method == .Get
 get(urlString, parameters: parameters, progress:  nil, success: successBlock, failure: failureBlock)
         }
         
        
if method == .Post
 post(urlString, parameters: parameters, progress:  nil, success: successBlock, failure: failureBlock)
         }
         
         
     }
 }
 
 
 
 
 
 
 

  这个代码是调用 

 
 
 
         
let
            "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语法结构来即可。