iOS OC与Swift混编之桥接文件

作者: 丶Destinyxl | 来源:发表于2016-09-25 15:18 被阅读7000次

iOS开发中有时候不可避免的会使用到OC和Swift的混编,这时候就需要建立桥接文件连接不同语言的类库

最近项目中需要用到图表功能,网上发现一款强大的图表第三方库Charts,但是是用Swift写的,如果自己的项目是OC写的导入Swift项目就需要用到桥接文件了,记录下嵌入过程的一些坑

首先GitHub下载SDK后导入项目

最新SDK的文件目录

接下来将Charts导入项目中,右键-show in Finder,打开自己项目的目录

打开项目目录

将Chart文件复制到项目目录下(与.xcodeproj同级)

复制文件

将charts项目添加到自己的项目中

将Charts导入到工程

接下来导入库 Target-General - Embedded Binaries

嵌入二进制文件

项目导入了,由于自己的项目是OC,Charts是Swift,想调用Charts的API,必须通过桥接桥接,创建桥接文件这里有两种方式:

一、系统默认方式创建

每个项目第一次创建不同语言的文件,Xcode会自动提示是否新建桥接文件。现在新建一个Swift文件,名字可以任意起,反正是用不到的,我们只是要用生成的桥接文件

新建一个Swift文件

文件建好之后会提示是否新建桥接文件

选择Create Bridging Header,此时你会发现项目会出现一个 项目名-Bridging-Header.h的文件,这个就是桥接文件了,自己在桥接文件中引用 Charts

在桥接文件中对Charts引用

使用之前的Charts版本还需要在BuildSetting里做一些设置,但是现在我升级了Xcode8发现完成上面的操作就可以了,不需要再做任何设置,在ViewController里引入文件试试

引用头文件

注意上图中1那个文件,项目中你是看不到的,这个文件是生成桥接头文件自动生成的,名字是 项目名-Swift.h(不要自己去手动创建)  两个文件同时引用后,build一下,应该是没问题的,导入成功!

二、自己创建桥接头文件

上面的方式是项目第一次创建Swift文件时才会提示我们是否创建桥接头文件,但是如果一不小心点错了取消或者不创建,岂不是悲剧了(>﹏<) ,而且如果你的项目文件是中文的,在你import上面两个文件的时候会感觉到很怪异,而且后面你会发现经常报错,显示找不到桥接头文件,所以当出现这些情况下,就需要我们自己创建,command+N 创建一个普通的头文件,

创建完成后,引入Swift库文件

接下来把系统创建的桥接头文件用我们自己创建的文件替换掉

修改桥接头文件

同样我们也可以修改自动生成的空间文件,就是上面我们导入时表示1那个文件

修改空间文件名

至此两个文件都进行自定义修改,回到刚才我们引用两个文件的控制器,修改文件引用

此处会有一个报错,显示文件找不到,没关系,clean-build,然后你会惊奇的发现Build Succeed,一切都是那么美好!O(∩_∩)O

效果图

相关文章

  • [iOS] Swift与Objective-C混编

    一. 创建Objective-C混编桥接文件 当Swift与OC混编时,需要创建桥接文件,才能在OC中使用Swif...

  • Swift和OC混编出现的桥接问题

    1.如果是自己的项目要进行Swift和OC混编 请参考 oc 和 swift混编之自建桥接文件 作者:水墨九 进行...

  • OC与Swift混编

    OC与Swift如何实现混编 1、 Swift项目中使用OC 在Swift中引用OC需要借助桥接文件xx brid...

  • Swift与OC、C++混编

    Swift与OC混编 Swift工程中调用OC代码 不需要在Swift中import OC的类,统一在桥接文件中导...

  • OC和Swift混编

    OC和Swift混编 1、OC项目 首次添加Swift文件时,Xcode会自动添加一个桥接文件。Build Set...

  • [iOS开发--Swift 如何完成工程中Swift和OC的混编

    [iOS开发--Swift 如何完成工程中Swift和OC的混编桥接(Cocoapods同样适用)] 最快捷的方式...

  • Objective-C和Swift混编指南

    OC项目混编Swift OC项目创建第一个Swift文件的时候会提示创建桥接文件,我们选择Create Bridg...

  • iOS OC与Swift混编之桥接文件

    iOS开发中有时候不可避免的会使用到OC和Swift的混编,这时候就需要建立桥接文件连接不同语言的类库 最近项目中...

  • swift与OC混编

    swift与OC混编的总结 现在的swift开发多数会用到混编。swift和oc是通过桥接文件来实现的。无论是在o...

  • 添加OC与Swift混编的桥接文件

    swift项目中是不能直接混编oc的,中间需要一个桥接文件 桥接文件怎么创建呢 首先创建一个header文件 然后...

网友评论

  • 念念不忘_2016:感谢脱坑
  • iOS_:修改空间文件名那一步是啥意思啊 没听懂
  • 悟空_大师兄_:大佬 Charts框架下载下来放到工程里面 运行不了 直接报错怎么处理
    命令/程序/ xcode.app/contents/developer/toolchains/xcodedefault.xctoolchain/usr/bin/swiftc失败退出代码1
  • 冰三尺:遇到一个超级坑的问题, 在Swift的工程中创建OC时, 提示我要添加桥接文件, 但是我没添加, 后期我自己手动添加一个, 在Swift中使用OC都没有问题, 但是问题是在OC 中使用Swift, 找到了Swift的类, 但是找不到Swift的方法, 我自己试了好多次, 同样的方式, 一个手动创建桥接文件, 一个自动创建桥接文件, 手动创建的就是不行, 请问作者有遇到过吗?
    丶Destinyxl:自动建立的桥接文件可以?
  • 请叫我大叔_cd68:x谢谢楼主,终于出坑了!!@_@:pray:
  • 6b9801f1b8f7:楼主,我之前用的xcode7.3,导入的chart是2.2.5版本的,现在升级了xcode8.1,把chart3.0版本导进来了,之前的桥接文件就找不到了,是怎么回事呀
    丶Destinyxl:@无谓的执恋 我之前也出现过很多次这种情况,应该是路径的问题,建议你重新新建一个桥接文件试试 或者按照集成步骤在buildsetting检查一下
    6b9801f1b8f7:之前导入的时候生成一个桥接文件,就是那个工程名-Swift.h的文件,现在报错,说找不到这个文件
    丶Destinyxl:@无谓的执恋 桥接文件找不到是指?
  • LByy:@import Charts; 总是显示这个找不到 😂😂
    丶Destinyxl:@LByy 是的 最低需要xcode8 如果要是xcode7.2 charts版本需要2.2.3或之前的版本 https://github.com/danielgindi/Charts/releases
    LByy:@LL_Summit 3.0版本 但是我的Xcode是7.2.1的 这个有问题不??
    丶Destinyxl:@LByy 你使用的charts哪个版本
  • LByy:楼主 Xcode版本7.2.1还能用这个不?
    用cocoapods能直接配置不?项目需要 急 谢谢啊
  • heron_funny:为什么我直接编译demo都会报错?
    丶Destinyxl:@heron_funny 需要安装carthage 这一步忘写了,明天我会更新上

本文标题:iOS OC与Swift混编之桥接文件

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