快速桥接头导入问题

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

: 0: error: 无法导入 Objective-C header’——-path —— to ——-header/... . h’

Screenshot 1

在构建设置中,我将头搜索路径字符串添加到桥接头的位置,但没有任何帮助。

有人遇到过这个问题吗?

142798 次浏览

I've also experienced this problem and sadly it is just a bug in the SDK + Xcode. I talked to an engineer at WWDC, about this and a few other problems I was having with CloudKit. These bugs will be addressed in the next seed of Xcode.

这就是使用测试版软件的有趣之处。

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

Xcode 正在寻找 Project-> Header.h

这意味着您需要将文件放入您的项目文件夹(ProjectName-> ProjectNameFolder) !

希望这有所帮助;)

更新: 我不确定我是否明白你的意思,但是试试这个来解决你的问题:
1. 删除到目前为止创建的所有桥接文件。
2. 选择项目的主文件夹,点击 new file-> iOS-> Header file。
3. Write your imports in the header file created.
4.选择 Xcode-> Build Settings 中的项目,输入搜索字段: bridge 并在关键字 SWIFT _ OBJC _ BRIDGING _ HEADER 中输入头文件的名称或其路径!

如果您遵循这些步骤,您的头文件将在正确的位置创建!

希望能有帮助!

找到路径:

Build Settings/Swift Compiler-Code Generation/Objective-C Bridging Header

然后删除那个文件,你就没事了。

这可能只会影响一小部分人,但在我的项目中,我使用的是 CocoaPods,其中一个 Pods 有一个子规格,带有自己的 CocoPods。解决方案是使用全角度导入来引用子吊舱中的任何文件。

#import <HexColors/HexColor.h>

而不是

#import "HexColor.h"

In my case this was actually an error as a result of a circular reference. I had a class imported in the bridging header, and that class' header file was importing the swift header (<MODULE_NAME>-Swift.h). I was doing this because in the Obj-C header file I needed to use a class that was declared in Swift, the solution was to simply use the @class declarative.

所以基本上错误说“未能导入桥接头”,上面的错误说 <MODULE_NAME>-Swift.h文件未找到,上面的错误指向一个特定的 Obj-C 头文件(即视图控制器)。

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

@class MyObject;

对于其他有麻烦的人增加快速级目标 c 项目。 这就是我的办法:

  1. create NEW swift file. this will make xcode to prompt if you want xcode to create all settings for mix swift-objective-c project including brigde-header.h for you. press yes.
  2. 现在,添加要在项目中使用的现有快速文件。
  3. 在实现文件中,你将使用迅速类添加: # import“ YOURPROJECTNAME-ift. h”. this file xcode create for you。 如果你的 xcode 项目是 myProject 那么“ myProject-ift. h”

就是这样,现在在代码中创建 Swift 类,就像它是 Objective-c 一样。

对我来说,这是因为我忘记将其添加到目标的构建设置。

enter image description here

I actually created an empty OSX Source Objective C file under the project (where all my swift files are).

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

经过最初几天的挣扎,我终于成功地将 Facebook 注册功能整合到我的 iOS 应用程序中。下面是步骤(我假设您已经在您的计算机中安装了 Facebook SDK v4.1或更高版本) :

  1. 在项目下添加 Facebook 框架-FBSDKCoreKit,FBSDKLoginKit。
  2. Make no changes in the Build settings as FB SDK v4.1 and above doesn't need anymore bridging header files.
  3. 将 FBSDKCorekit、 FBSDKLoginKit 导入 ViewController.swift、 Appgenerate.swift 文件中
  4. 如上所述,在 pList 中添加信息

  5. Build your app. And wohoo! no compile time errors.

"we need to tell Xcode where to look for the 头文件 we’re listing in our 桥接头桥接头桥接头. Find the Search Paths section, and change the project-level setting for User Header Search Paths, adding a recursive entry for the ‘Pods’ directory: 豆荚/** " http://swiftalicio.us/2014/11/using-cocoapods-from-swift/

在其他修复中,当我尝试执行 Product-> Archive 时出现了错误。结果我发现:

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

把它放到最后一行之后,它起作用了。

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

Instead of importing

#import <SomeCocoaPod/SomeCocoaPod.h>

我写了

#import "SomeCocoaPod.h"

这是我的大错

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

选择 Yes 配置 Objective-C 桥接头。

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

在刚刚创建的 projectName-Bridge-Header.h 文件中,添加以下代码行:

“ # import < GoogleMaps/GoogleMaps.h >”

编辑 Appgenerate.swift 文件:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {


GMSServices.provideAPIKey("AIza....") //iOS API key


return true
}

请按照链接 查看完整的示例

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

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

您可以从 Window-> Projects 到达该选项。

由于不同的原因,我有相同的问题,这是我的案子我建立的项目,需要幻灯片菜单被包括在内,我使用 SWReveaViewController 库来解决这个问题

当我导入库文件时,我会在“支持文件”下面添加子文件夹(SWReveaViewController)。H & & & .M 文件,它触发两个错误,不能导入桥和 SWReveaViewController.h 是找不到的。

我如何修复它

当我将文件直接移动到“支持文件”(删除子文件夹)时,SWReveaViewController.m 会自动添加到“构建阶段”—— > “编译源”,问题就消失了

enter image description here

有类似的问题,不能解决任何解决上述。我的项目使用可可豆。我注意到,除了错误之外,我还收到了以下信息的警告:

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'

enter image description here

所以解决方案非常简单。对于 Pods 项目,将 仅构建活动体系结构标志改为 没有,原来的错误消失了。

当我在我的应用程序中添加一个“今日扩展”时,我经历了这样的错误。扩展的构建目标与我的应用程序的构建目标使用相同的桥接头名称生成。这导致了错误,因为扩展名没有看到我的应用程序的桥接头中列出的文件。

The only thing You need to to is delete or change the name of the bridging header for the extension and all will be fine.

希望这能有所帮助。

设置 预编译桥接头没有为我解决问题。