我已经阅读了很多有关类似问题的问答,但是我还没有找到解决方案。如果有人能阐明一点,那就太好了。
我创建了一个Swift项目,现在我想将其与一些Objective-C结合起来。仅在尝试#import我的Chartboost.h文件时,才出现我的“无法导入桥接头”。因此,只要桥接头文件中没有任何内容,Xcode就会找到它,并且没有任何问题。但是一旦我添加了这个:
#import <Chartboost/Chartboost.h>
我收到了该错误以及其他38个错误,说“快速编译器错误-此处不允许使用函数定义”。
我已经正确导入了我的框架。而且我的框架搜索路径是正确的。而且只有当我导入Chartboost框架时。 UIKit和Foundation可以正常工作。
这是导致该问题的方法。...首先,我创建了一个新的Obj-C文件,然后单击“是,当Xcode给我一个 pop 窗口询问是否可以配置桥接头时。这创建了“事实” -Bridging-Header.h“
然后,我确定在Swift编译器-代码生成下,Objective-C桥接头路径正确。
我什至输入了一个非常特定的路径/Users/me/Desktop/FunFacts/FunFacts-Bridging-Header.h
并仍然显示“导入失败”。
我还将“定义模块”设置为"is"(因为我听说这可能会有所帮助)。我的产品模块名称是FunFacts。
为什么在尝试添加#import时FunFacts-Bridging-Header.h无法导入?
最佳答案
我在另一篇文章中回答了这个问题:Chartboost integration issues with XCode 6.1
说明:
似乎有些Pod和库不愿意导入基本框架,因为它们期望您的代码已经拥有它们。由于导入框架的方式发生了变化,这不适用于Swift。
您需要做的就是在桥接头文件中添加所需的框架。
回答:
这取决于编译器引发什么错误。
如果它抱怨NSObject
,NSString
等...,您需要添加
桥接头文件顶部的#import <Foundation/Foundation.h>
。
如果它抱怨UIView
,UIButton
等...,则需要在桥接头文件的顶部添加#import <UIKit/UIKit.h>
。