Swift Bridging Header导入问题
按照说明,我创build了一个桥接头,并添加到我的项目。 不幸的是,发生了以下错误:
:0:错误:无法导入Objective-C标题'—path – 到—标题/ …. h'
在构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项目中。 这对我有用:
- 创build新的swift文件。 这将使xcode提示你是否想让xcode为你创build包括brigde-header.h在内的混合swift-objective-c项目的所有设置。 按是。
- 现在,添加您想要在项目中使用的现有swift文件。
- 在实现文件中,您将使用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或更高版本):
- 在您的项目下添加Facebook框架 – FBSDKCoreKit,FBSDKLoginKit。
- 由于FB SDK v4.1及以上版本不再需要桥接头文件,所以不要修改Build设置。
- 在ViewController.swift,AppDelegate.swift文件中导入FBSDKCorekit,FBSDKLoginKit
-
如上所述,在pList中添加信息
-
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 ,原始错误消失。