因AF停止维护更新,上级要求使用第三方库Alamofire,替换AF,我们现在是用Objective-c来写这个项目,而且我们是为宿主提供framework包,宿主如何调用Alamofire成了问题,是否与宿主的AF冲突也是未知数。
后经过各种百度以及广州同事协助终于完成AF的替换并且不会与原有AF冲突!由于百度文章太多就不在此引入了!
首先pod Alamofire 最好指定版本 因为不同版本调用方法会有出入,当然最终指向都是一样的。这里使用的是5.6.4版本 直接使用AF.request方法即可。
然后要创建一个继承自NSObject的swift文件,注意创建方式不是直接创建swift文件,而是像oc创建类文件一样,语言选择swift语言
创建完成之后xcdoe会自动弹出创建桥接文件弹框,选择创建即可,xcode会自动帮你把相关配置配好。
然后就是swif编写了,我这里在swift文件里面写了方法供外部OC调用。OC调用swift方法 需要在swift方法前面加上@objc注解 方法如下(方便自己下次使用直接放代码了,图片时间长了容易丢失):
@objc public func ocCallMethod(_ url: String, _ parameter: [String: Any], _ header:[String: String],_ success:@escaping (Any) -> Void, failure:@escaping (Error) -> Void) {
var headers = AF.sessionConfiguration.headers;
headers.add(name: “Content_Type“, value: “application/json“);
headers.add(name: “apiFrom”, value: header[“ios“] ?? “”);
headers.add(name: “sdkVersion“, value: header[“sdkVersion”] ?? “”);
headers.add(name: “signature“, value: header[“signature“] ?? “”);
headers.add(name: “timestamp“, value: header[“timestamp“] ?? “”);
headers.add(name: “nonceStr”, value: header[“nonceStr”] ?? “”);
headers.add(name: “appKey“, value: header[“appKey“] ?? “e1”);
AF.request(url, method: .post, parameters: parameter, encoding: URLEncoding.default, headers: headers).responseData{(AFDataResponse ) in
switch AFDataResponse.result {
let dict = try? JSONSerialization.jsonObject(with: AFDataResponse.data!, options: JSONSerialization.ReadingOptions.allowFragments) as? [String: Any]
failure(AFDataResponse.error!);
}
}
}
关于桥接文件,里面不需要做任何更改,在swift文件中引入Alamofire即可调用
如果你的xcdoe没有自动帮你创建桥接文件,也可以手动创建。命名规范“工程名-Bridging-Header.h”,然后在setting里面设置好相关配置
原文地址:https://blog.csdn.net/zhanghaibo369/article/details/129688239
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_22496.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!