Swift Bridging Header导入问题

按照说明,我创build了一个桥接头,并添加到我的项目。 不幸的是,发生了以下错误:

:0:错误:无法导入Objective-C标题'—path – 到—标题/ …. h'

截图1

在构build设置中,我将头部searchpathstring添加到桥接头的位置,但没有任何帮助。

有没有人遇到过这个问题?

请小心将文件添加到您的错误抱怨的文件夹! 我犯了同样的错误,如果你从Xcode创build文件,它将进入文件夹:Project-> Project-> Header.h

而Xcode正在寻找Project-> Header.h

这意味着你需要把文件放到你的项目文件夹(ProjectName-> ProjectNameFolder)中!

希望有所帮助;)

更新:我不知道如果我有你的意思,但试试这个来解决你的问题:
1.删​​除所有到目前为止创build的桥接文件。
2.select项目的主文件夹,并点击新文件 – > iOS->头文件。
3.在你创build的头文件中写入你的导入。
4.在Xcode-> Build Settings中select项目,在search字段中input:桥接,然后在SWIFT_OBJC_BRIDGING_HEADER键中input头文件的名称或path!

如果你按照这个步骤,你的头文件将被创build在正确的位置!

:D希望有帮助!

在我的情况下,这实际上是一个循环引用的结果的错误。 我有一个导入桥接头的类,并且这个类的头文件导入了swift头文件( <MODULE_NAME>-Swift.h )。 我这样做是因为在Obj-C头文件中,我需要使用在Swift中声明的类,解决scheme是简单地使用@class声明。

所以基本上错误说:“无法导入<MODULE_NAME>-Swift.h ”,上面的错误说<MODULE_NAME>-Swift.h文件没有find,上面是一个指向特定的Obj-C头文件(即视图控制器)的错误。

检查这个文件,我注意到它在头文件中声明了-Swift.h。 将此导入移动到实施解决了问题。 所以我需要使用一个对象,我们称之为在Swift中定义的MyObject ,所以我只是简单的改变了头文件

 @class MyObject; 

findpath:

构build设置/ Swift编译器代码生成/ Objective-C桥接头

并删除该文件。 那你应该没事的。

这可能只会影响到一小部分人,但在我的情况下,我的项目是使用CocoaPods,其中一个豆荚有自己的CocoaPods的子规格。 解决scheme是使用全angular导入来引用子窗格中的任何文件。

 #import <HexColors/HexColor.h> 

而不是

 #import "HexColor.h" 

对于我删除派生的数据修复它,我注意到,即使我从一个旧的提交签出,同样的问题发生。

您可以从窗口 – >项目中find该选项。

对我来说,这是因为我忘了将它添加到目标的生成设置。

在这里输入图像描述

“我们需要告诉Xcode在哪里查找我们在桥接头中列出的头文件 ,findsearchpath部分,并更改用户头searchpath的项目级设置,为”栈“添加recursion条目,目录: Pods / **“ http://swiftalicio.us/2014/11/using-cocoapods-from-swift/

我也遇到过这个问题,可惜这只是SDK + Xcode中的一个bug。 我和WWDC的一位工程师谈了这件事以及我在CloudKit上遇到的一些其他问题。 这些错误将在Xcode的下一个种子中解决。

这是使用testing版软件的有趣部分。

对于那些有麻烦的人来说,把快速课join到Objective-C项目中。 这对我有用:

  1. 创build新的swift文件。 这将使xcode提示你是否想让xcode为你创build包括brigde-header.h在内的混合swift-objective-c项目的所有设置。 按是。
  2. 现在,添加您想要在项目中使用的现有swift文件。
  3. 在实现文件中,您将使用swift类添加:#import“YOURPROJECTNAME-swift.h”。 这个文件xcode为你创build。 如果你的xcode项目是myProject,那么“myProject-swift.h”

就是这样。 现在在你的代码中创buildSwift类,就像是Objective-C一样。

将一个临时的Objective-C文件添加到您的项目中。 你可以给它任何你喜欢的名字。

selectYesconfigurationObjective-C桥接头。

删除刚刚创build的临时Objective-C文件。

在刚刚创build的projectName-Bridging-Header.h文件中,添加以下行:

'#import <GoogleMaps / GoogleMaps.h>'

编辑AppDelegate.swift文件:

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { GMSServices.provideAPIKey("AIza....") //iOS API key return true } 

请点击链接获取完整示例

对我来说,在添加框架的时候并没有在目标path中select“如果需要复制项目”。 只需select此选项重新添加框架。

经过最初的几天斗争,我终于成功地将Facebook注册整合到我的iOS应用程序中。 这里是步骤(我假设你已经在你的机器上安装了Facebook SDK v4.1或更高版本):

  1. 在您的项目下添加Facebook框架 – FBSDKCoreKit,FBSDKLoginKit。
  2. 由于FB SDK v4.1及以上版本不再需要桥接头文件,所以不要修改Build设置。
  3. 在ViewController.swift,AppDelegate.swift文件中导入FBSDKCorekit,FBSDKLoginKit
  4. 如上所述,在pList中添加信息

  5. build立你的应用程序 喔! 没有编译时错误。

我有不同的原因相同的问题, 这里是我的情况下,我build立项目,需要滑动菜单被列入,我正在使用SWRevealViewController库接近

当我导入库文件,我添加子文件夹(SWRevealViewController)支持文件下.h && .m文件,它引发两个错误,无法导入桥和SWRevealViewController.h没有find。

我如何解决它

当我直接将文件移动到支持文件(删除子文件夹),SWRevealViewController.m自动添加到生成阶段 – >编译源和问题消失了

在这里输入图像描述

当我为我的应用程序添加Today Extension时,遇到了这种错误。 扩展的构build目标是使用与我的应用程序的构build目标相同的桥接头名称生成的。 这是导致错误,因为扩展没有看到我的应用程序的桥接头中列出的文件。

唯一需要删除或更改扩展名的桥接头的名称和所有将没事的。

希望这会有所帮助。

我实际上在项目下创build了一个空的OSX源目标C文件(我所有的swift文件都在这里)。

我添加了导入,然后删除了.m文件。

在其他修复程序中,当我尝试执行产品 – >归档时,出现错误。 原来我有这个:

 Objective-C Bridging Header Debug (had the value) Release (had the value) Any architecture | Any SDK (this was blank - problem here!) 

在最后一行设置之后,它就起作用了。

我从cocoapods的bridgin头文件中导入了一些文件,但没有正确的方式。

而不是import

 #import <SomeCocoaPod/SomeCocoaPod.h> 

我写了

 #import "SomeCocoaPod.h" 

这是我的巨大错误

有类似的问题,以上任何解决scheme都无法解决。 我的项目使用CocoaPods。 我注意到,随着错误,我收到了以下消息的警告:

 Uncategorized: Target 'Pods' of project 'Pods' was rejected as an implicit dependency for 'Pods.framework' because its architectures 'arm64' didn't contain all required architectures 'armv7 arm64' 

在这里输入图像描述

所以解决scheme很简单。 对于Pods项目,将Build Active Architecture Only标志更改为No ,原始错误消失。

Interesting Posts