iOS 问题 1: OC项目导入swift三方库不兼容问题

简介: iOS 问题 1: OC项目导入swift三方库不兼容问题
+关注继续查看

背景


由于目前的项目是OC开发,且目前通过cocopods导入的三方库,是以.a静态库的形式导入


需求


目前需要导入一个swift开发的三方SDK,所以需要在OC项目中pod一个swift三方库


问题


对于swift三方库而言,一般都会要求 使用 use_frameworks! 通过.framework动态库的形式导入。而目前OC项目中pod是通过.a的形式导入,所以产生了以下问题:


  • 1、如果pod中使用 use_frameworks!,会改变项目中原有OC三方库的导入方式,xcode的会提示OC库找不到,需要从#import <xxx.h>改为#import "xxx.h"
  • 2、如果不使用use_frameworks!,以.a的形式导入swift三方库,编译时期报错


解决办法


那么有没有办法,可以在不改变原来的三方库的导入形式,然后还可以集成swift三方库且不报错呢?答案是有的,即使用混编的方式,即swift三方库不采用 use_frameworks!


1、xcode配置


  • 设置混编:target -> Defines Module 设置为YES

image.png


2、项目配置


  • 创建一个.swift文件,且创建时会自动生成一个桥接文件
  • 如果桥接文件没有自动生成,


    • 方式1:可以先删除 target -> Build Settings -> Objective-C Bridging Header中的路径,删除创建的swift文件,重新创建swift文件,此时会自动生成
    • 方式2:也可以自行创建桥接文件,并在target -> Build Settings -> Objective-C Bridging Header中配置桥接文件路径


需要注意以下几点:

  • 1)需要确保有桥接文件 项目名-Bridging-Header.h
  • 2)确保项目中至少有一个.swift文件
  • 3)target -> Build Settings中,确保 Product Module Name是有值的,如果没有,直接设置为 $(PRODUCT_NAME)
  • 4)target -> BuildSetting -> SWIFT_VERSION需要与pod中swift三方库的 BuildSetting -> SWIFT_VERSION 一致


3、swift三方库使用


  • 项目名-Bridging-Header.h桥接文件中导入需要的swift三方库

@import swiftSDK;
  • 在需要用到swift三方库的地方,导入 “项目名-swift.h”文件以及桥接文件

#import "项目名-Swift.h"
#import "项目名-Bridging-Header.h"

到此,可以在OC项目中以.a的形式导入swift三方库了,且不改变原有的三方库导入形式


相关文章
|
4天前
|
Swift iOS开发
iOS OC混编Swift 后者无法走断点
iOS OC混编Swift 后者无法走断点
8 0
|
6月前
|
Swift iOS开发
IOS使用Swift加载Xib文件
IOS使用Swift加载Xib文件
89 0
|
9月前
|
Swift iOS开发
iOS开发 - 适合工程多环境切换(swift环境),适合经常打很多不同环境包的人
iOS开发 - 适合工程多环境切换(swift环境),适合经常打很多不同环境包的人
162 0
iOS开发 - 适合工程多环境切换(swift环境),适合经常打很多不同环境包的人
|
9月前
|
Swift 数据安全/隐私保护 iOS开发
iOS开发 - swift通过Alamofire实现https通信
iOS开发 - swift通过Alamofire实现https通信
221 0
iOS开发 - swift通过Alamofire实现https通信
|
Swift iOS开发 容器
iOS 仿支付宝银行卡界面(支持Swift/OC)
在有支付相关的APP中,都有对应的钱包,虽然现在的支付宝,微信支付很流行,但是都是需要绑定自己的银行卡,那么这个银行卡的卡包页面该怎么实现呢?在网上找了许久也没有找到合适的,那就索性自己造轮子。
270 0
|
Swift iOS开发
Swift:暗黑模式iOS 13以上支持是否跟随系统和iOS13以下的主题适配
Swift:暗黑模式iOS 13以上支持是否跟随系统和iOS13以下的主题适配
1034 0
Swift:暗黑模式iOS 13以上支持是否跟随系统和iOS13以下的主题适配
|
编解码 Swift iOS开发
iOS 应用之间的跳转(OC&Swift)
iOS 应用之间的跳转(OC&Swift)
609 0
iOS 应用之间的跳转(OC&Swift)
|
Swift iOS开发
iOS - Swift - NSAttributedString 显示Emoji乱码问题
iOS - Swift - NSAttributedString 显示Emoji乱码问题
iOS - Swift - NSAttributedString 显示Emoji乱码问题
|
缓存 Swift iOS开发
iOS开发swift版异步加载网络图片(带缓存和缺省图片)
iOS开发swift版异步加载网络图片(带缓存和缺省图片)
382 0
|
开发工具 Swift iOS开发
视频点播IOS播放器SDK Swift集成和实现
通过Swift 集成和实现阿里视频点播IOS播放器SDK的介绍
1678 0
视频点播IOS播放器SDK Swift集成和实现
相关产品
云迁移中心
相关课程
更多
推荐文章
更多