今天,工作的时候,遇到OC调用swift中代码的问题,特意上网查了查,现在自己总结如下:
以新建一个项目为例: OCAndSwift
1. 项目创建的时候,选择的时候Objective-C语言
2. 创建了一个SwiftUser.swift文件,内容如下:(可忽略)
3. 这时,我们在 ViewController.m中调用刚刚创建出来的 SwiftUser.swift文件,这是会看到如下提示:
4. 问题出现了,那我们要怎么才能调用swift格式的文件呢???
解决如下: 引入文件 OCAndSwift-swift.h,即可
5. 有没有小伙伴会有疑问说,这个是什么文件啊? 为什么是这个文件啊?
哈哈,通过查阅资料了解到,这个就是所谓的桥接文件,关于文件名的命名,是这样的,
targets->build settings ->packaging->Product Module Name
通过,这些配置,就可以查询到桥接文件名称
7. OCAndSwift-swift.h,默认后缀 -swift.h。文件中的内容为自动生成,无需程序员手动修改,通过 command + 鼠标左键,即可查询到里边的内容
另外,今天遇到一个问题,当我在 SwiftUser.swift 文件中,创建 Int 类型变量时,OCAndSwift-swift.h 并不会帮我自动生成对应的属性字段。
经过测试,发现 枚举 类型也无法转换
解决办法:我们可以通过方法传参的方式,如下:定义的 SettingAge(age:Int) 方法,这样就可以传递Int类型
==============================我是分割线=============================================
Swift 中调用 OC 代码,这个比较简单,
1. 创建桥接文件
OCAndSwift-Bridging-Header.h, 导入所需要的 #import "xxx.h" 文件
2. 配置文件
targets->build settings ->packaging->Object-C Bridging Header
3.之后就可以随心所欲的调用了,在每次新创建出来 oc.h 文件时,都需要手动向桥接文件中添加 #import "xxx.h",略显麻烦。