Swift 2.2项目中新Swift文件无法加入MyProductName-Swift.h的问题
解决Swift 2.2文件无法加入自动生成的
MyProductName-Swift.h问题 针对你在Xcode 7.3.1 + Swift 2.2项目中遇到的问题,我整理了几个关键排查点,你可以逐一尝试:
确认Swift类符合OC暴露规则
在Swift 2.2里,只有两类Swift类会被自动收录到桥接头文件:- 继承自
NSObject的类(比如class MyClass: NSObject {}) - 用
@objc显式标记的类(比如@objc class MyClass {})
另外,类里需要被OC调用的方法/属性,要么保持默认的internal权限,要么显式加@objc修饰——如果是私有成员,OC是访问不到的。
- 继承自
检查项目Build Settings的核心配置
打开项目的Build Settings面板,搜索以下选项:Objective-C Generated Interface Header Name:确认值是MyProductName-Swift.h,注意产品名称不要有空格或特殊字符,否则会导致识别异常Defines Module:必须设为YES,这是Xcode自动生成桥接文件的前提Product Module Name:这个名称要和你OC文件里导入的#import "MyProductName-Swift.h"完全一致,大小写也不能错
验证Swift文件的Target归属
选中你的Swift文件,看右侧的File Inspector面板,确保它的Target Membership勾选了主项目的Target(不是Test Target或者其他扩展Target)。如果文件不在主Target里,肯定不会被加入主项目的桥接头文件。强制Xcode重新生成桥接文件
光Clean和删Derived Data可能不够,试试这套流程:- 先把OC文件里的
#import "MyProductName-Swift.h"注释掉 - 按
Command+Shift+K清理项目,再手动删除Derived Data(Xcode偏好设置→Locations→Derived Data,点击箭头打开文件夹后删掉对应项目的文件夹) - 完全退出Xcode,再重新打开项目
- 单独选中那个Swift文件,按
Command+B编译它 - 取消注释OC文件里的导入语句,再编译整个项目
- 先把OC文件里的
排查Swift文件的编译错误
如果你的Swift文件本身有编译错误,Xcode会跳过生成它的桥接接口。先单独编译Swift文件,确保没有红色报错,再去查看MyProductName-Swift.h是否包含它。
内容的提问来源于stack exchange,提问作者Casey West
相关产品推荐
相关产品推荐

