按照说明,我创建了一个桥接头并将其添加到我的项目中。不幸的是,发生了以下错误:
:0: 错误:无法导入 Objective-C 标头 '---path--to---header/....h'
在构建设置中,我将标题搜索路径字符串添加到桥接头的位置,但没有任何帮助。
有没有人遇到过这个问题?
按照说明,我创建了一个桥接头并将其添加到我的项目中。不幸的是,发生了以下错误:
:0: 错误:无法导入 Objective-C 标头 '---path--to---header/....h'
在构建设置中,我将标题搜索路径字符串添加到桥接头的位置,但没有任何帮助。
有没有人遇到过这个问题?
小心将文件添加到您的错误抱怨的文件夹中!我犯了同样的错误,如果您从 Xcode 创建文件,它将转到文件夹:Project->Project->Header.h
Xcode 正在寻找 Project->Header.h
这意味着您需要将文件放在项目文件夹中(ProjectName->ProjectNameFolder)!
希望有帮助;)
更新:我不确定我是否明白你的意思,但试试这个来解决你的问题:
1. 删除你到目前为止创建的所有桥接文件。
2. 选择项目的主文件夹,点击新建文件->iOS->头文件。
3. 在创建的头文件中写入您的导入。
4. 在 Xcode->Build Settings 中选择项目,在搜索字段中输入:bridging 并在键 SWIFT_OBJC_BRIDGING_HEADER 中输入头文件的名称或路径!
如果您按照此步骤操作,您的头文件将在正确的位置创建!
:D 希望有帮助!
就我而言,这实际上是循环引用导致的错误。我在桥接头中导入了一个类,并且该类的头文件正在导入 swift 标头 ( <MODULE_NAME>-Swift.h
)。我这样做是因为在 Obj-C 头文件中我需要使用在 Swift 中声明的类,解决方案是简单地使用@class
声明性。
所以基本上错误说“无法导入桥接头”,上面的错误说<MODULE_NAME>-Swift.h
找不到文件,上面的错误是指向特定的 Obj-C 头文件(即视图控制器)。
检查这个文件,我注意到它在标题中声明了 -Swift.h。将此导入移至实现解决了该问题。所以我需要使用一个对象,让我们MyObject
在 Swift 中定义它,所以我只是将标题更改为
@class MyObject;
在以下位置找到路径:
Build Settings/Swift Compiler-Code Generation/Objective-C Bridging Header
并删除该文件。那你应该没事。
这可能只会影响一小部分人,但就我而言,我的项目使用的是 CocoaPods,其中一个 pod 有一个带有自己 CocoaPods 的子规范。解决方案是使用全角度导入来引用子 pod 中的任何文件。
#import <HexColors/HexColor.h>
而不是
#import "HexColor.h"
对于我删除派生数据来修复它,我注意到即使我从旧提交中签出,也会发生同样的问题。
您可以通过 Window-> Projects 访问该选项。
“我们需要告诉Xcode在哪里查找我们在桥接头中列出的头文件。找到 Search Paths 部分,并更改User Header Search Paths的项目级设置,为 'Pods' 添加一个递归条目目录:Pods/ ** " http://swiftalicio.us/2014/11/using-cocoapods-from-swift/
对我来说,这是因为我忘记将它添加到目标的构建设置中。
我也遇到过这个问题,遗憾的是这只是 SDK + Xcode 中的一个错误。我与 WWDC 的一位工程师讨论了这个问题以及我在使用 CloudKit 时遇到的其他一些问题。这些错误将在 Xcode 的下一个种子中解决。
这是使用测试版软件的乐趣所在。
对于其他难以将 swift 类添加到 Objective-C 项目中的人。这对我有用:
就是这样。现在在您的代码中创建 swift 类,就像它是 Objective-c 一样。
我从 cocoapods 的 bridgin 头文件中以不正确的方式导入了一些文件。
而不是导入
#import <SomeCocoaPod/SomeCocoaPod.h>
我写
#import "SomeCocoaPod.h"
这是我的巨大错误
将一个临时的 Objective-C 文件添加到您的项目中。你可以给它起任何你喜欢的名字。
选择 Yes 以配置 Objective-C 桥接头。
删除刚刚创建的临时 Objective-C 文件。
在刚刚创建的 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
}
按照链接获取完整示例
对我来说,添加框架时没有在目标路径中选择“如果需要,复制项目”。只需选择此选项即可重新添加框架。
当我将 Today Extension 添加到我的应用程序时,我遇到了这种错误。扩展的构建目标是使用与我的应用程序构建目标相同的桥接头名称生成的。这导致了错误,因为扩展程序看不到我的应用程序的桥接头中列出的文件。
您唯一需要做的就是删除或更改扩展的桥接头名称,一切都会好起来的。
希望这会有所帮助。
有类似的问题,上述任何解决方案都无法解决。我的项目使用 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'
所以解决方案非常简单。对于 Pods 项目,将Build Active Architecture Only标志更改为No并且原始错误消失了。
经过最初几天的努力,我终于成功地将 Facebook 注册集成到我的 iOS 应用程序中。以下是步骤(我假设您已经在您的机器上安装了 Facebook SDK v4.1 或更高版本):
如此处所述,在pList 中添加信息
构建您的应用程序。哇哦!没有编译时错误。
由于不同的原因,我遇到了同样的问题,这是我构建需要包含幻灯片菜单的项目的情况,我正在使用 SWRevealViewController lib 来解决这个问题
当我导入库文件时,我在 Supporting Files for .h && .m files 下添加了子文件夹(SWRevealViewController),它会引发两个错误,cant import bridge 和 SWRevealViewController.h is not found 。
我如何修复它
当我直接将文件移动到支持文件(删除子文件夹)时,SWRevealViewController.m 自动添加到构建阶段->编译源并且问题消失了
我实际上在项目下创建了一个空的 OSX Source Objective C 文件(我所有的 swift 文件都在其中)。
我添加了导入,然后删除了.m文件。
在其他修复程序中,当我尝试执行 Product->Archive 时出现错误。原来我有这个:
Objective-C Bridging Header
Debug (had the value)
Release (had the value)
Any architecture | Any SDK (this was blank - problem here!)
在最后一行设置它之后,它起作用了。
将Precompile Bridging Header设置为No为我解决问题。