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

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

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

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

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


当前回答

现在它起作用了。

项目必须具有不包括空格的产品模块名称。 “定义模块”必须在“生成设置”中的“打包”下设置为“是”。

最后的作品。感谢大家的帮助:-)

其他回答

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

#进口“ProductModuleName-Swift.h”

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

这可能是一个明显的点(也许太明显了),但是您必须在项目中至少有一个swift文件来生成头文件。如果您正在编写样板或配置代码,意图稍后编写swift,则导入将不起作用。

I had similar problem but my project was compiling before and suddenly got error after few files code change. It took me while to figure out why I am getting 'File not found' error for myproject-swift.h file. The code changes I had done had some errors. Xcode did not point put those error instead all time showing the 'File not found error'. Then got copy of previous version code and I compared with new code and merged file one by one. After each file merge complied the project to find the error. So bottom line is if you have error in your code Xcode may just display 'file not found error' for myproject-swift.h file. Most likely you have compilation error in your project. Clean those error and it will work.

我发现了一个对我很管用的小窍门。

Create your #import "ProductModuleName-Swift.h" in your appDelegate.h file and in your ProductName-Prefix.pch file. If you don't have it in xcode 6 you can create it with this way Why isn't ProjectName-Prefix.pch created automatically in Xcode 6? Command+shift+k to clean your code, if you receive an error about your "ProductModuleName-Swift.h" delete it from appDelegate.h file. Clean your code again. Now everything will work like a charm If you receive again error about the "ProductModuleName-Swift.h", now create again in appDelegate.h file and clean your code again.

每次你收到这个错误的时候都要做这个工作(从appDelegate.h文件中删除并创建“ProductModuleName-Swift.h”,然后清理你的代码)来静音它。

请允许我分享我在一个旧的objc项目中尝试使用Swift的经验。我不需要将定义模块设置为YES。

在我的情况下,我需要手动确保有一个objc桥接头。在我的构建设置中只出现了生成的接口头名称。

这导致生成了一个MyApp-Swift.h文件,但没有任何Swift类的痕迹。

苹果文档说,当你添加你的第一个swift文件时,会提示你创建一个桥接头。我没有。我手动添加了一个MyApp-Bridging-header.h文件,并在“Objective-C Bridging Header”字段中指向它。这使得我的MyApp-Swift.h文件被我的Swift类填充。

文档:将Swift导入Objective-C