我最近一直在努力将Swift添加到一个现有的项目中,以便在现实世界中进行尝试。

在向项目中添加Swift源文件时,我对获得“桥接头”没有任何问题,也就是说,Objective-C到Swift。

但是*-Swift.h头文件应该公开Swift类,无论是标记为@objc的类还是ObjC类的子类,都找不到:-(

在我的主应用程序代码(仍然是Objective-C)中,我没有看到任何关于如何使用我的新子类的具体说明,用Swift编写。

我是首席开发人员的应用程序有一个相当大的代码库(70.000行),所以一次性过渡它是不可能的。


当前回答

如果你像我一样,你可能把标题名搞错了。在我的头猛击了一段时间后,我在DerivedData中寻找文件,果然它在那里。在我的设置(使用标准派生数据文件夹,我相信):

cd ~/Library/Developer/Xcode/DerivedData
find * -iname '*Swift.h'

会找到的。如果文件夹中没有匹配的内容,Xcode就不会生成它。

我使用的Xcode版本6.2 (6C86e)

其他回答

我也有同样的问题。在添加你的第一个Swift文件之前,似乎你必须调整设置(定义模块和产品模块名称)。

如果你之后这样做,即使你添加更多的Swift文件或删除Swift文件并创建一个新的Swift文件,“*-Swift.h”文件也不会为这个项目生成。

如果项目模块名称中有空格,则必须用下划线替换空格。

例如,如果你的项目名称是“My project”,你可以使用:

#进口“My_Project-Swift.h”

项目中不创建实际文件([ProductModuleName]-Swift.h)。Cmd +单击导入,要么实时生成(并在内存中),这样你就可以看到链接是如何完成的,要么在Xcode缓存目录中打开一个文件,但它不在项目目录中。

你需要将定义模块项目道具(在目标的构建设置中)设置为Yes,如果你的模块名中有空格或破折号,在[ProductModuleName]- swift .h文件的所有导入中使用_。

你可以在所有使用swift类型的.h和.m文件中导入它,也可以在.pch文件中导入它。

所以如果我的模块(项目)被命名为“测试项目”,我将像这样导入它,在我的项目的。pch文件中(就在那里):

#import "Test_Project-Swift.h"

有时你只需要在obj-c .m文件上取消设置,然后重新设置目标成员。

我有一个类似的问题,发现你只能添加

#进口“ProductModuleName-Swift.h”

到obj-c .m文件,而不是找到伞头的.h文件