Reputation: 2121
Following instructions, I've created a bridging header and added to my project. Unfortunately, the following error occurred:
:0: error: could not import Objective-C header '---path--to---header/....h'
In build settings I added header search path string to the location of bridging header, but nothing helped.
Has anyone experienced this problem?
Upvotes: 128
Views: 144915
Reputation: 2900
Be careful to add the file to the folder that your error is complaining! I've made the same mistake, if you create the file from Xcode, it will go to the folder: Project->Project->Header.h
And Xcode is looking for Project->Header.h
That means you need to put the file inside your project folder (ProjectName->ProjectNameFolder)!
UPDATED: I'm not sure if I got what you mean, but try this to solve your problem:
If you follow this steps, your header file will be created at the correct location!
Upvotes: 155
Reputation: 1361
I experienced that kind of error, when I was adding a Today Extension to my app. The build target for the extension was generated with the same name of bridging header as my app's build target. This was leading to the error, because the extension does not see the files listed in the bridging header of my app.
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.
Hope that this will help.
Upvotes: 1
Reputation: 24247
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.
So basically the error said "Failed to import bridging header", the error above it said <MODULE_NAME>-Swift.h
file not found, above that was an error pointing at a specific Obj-C Header file (namely a View Controller).
Inspecting this file I noticed that it had the -Swift.h declared inside the header. Moving this import to the implementation resolved the issue. So I needed to use an object, lets call it MyObject
defined in Swift, so I simply changed the header to say
@class MyObject;
Upvotes: 68
Reputation: 6933
Had similar issue that could not be solved by any solution above. My project uses CocoaPods. I noticed that along with errors I got a warning with the following message:
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'
So solution was quite simple. For Pods project, change Build Active Architecture Only flag to No and original error went away.
Upvotes: 1
Reputation: 21452
I have the same issue for different reason , here is my case I build project that needs slide menu to be included , I am using SWRevealViewController lib to approach that
when I import the library files I add sub-folder(SWRevealViewController) under Supporting Files for .h && .m files , it fire two errors , cant import bridge and SWRevealViewController.h is not found .
How I fix it
when I move files to Supporting Files directly (delete sub-folder) , SWRevealViewController.m automatically added to Build Phases --> Compile Sources and issue is gone
Upvotes: 1
Reputation: 5300
For me deleting the derived data fixed it , I noticed even if I check out from an old commit, the same issue happens.
You can reach that option form Window-> Projects .
Upvotes: 16
Reputation: 633
For me it was not selecting 'Copy items if needed' in destination path while adding the framework. Simply re-add the framework with this option selected.
Upvotes: 2
Reputation: 5201
Add a temporary Objective-C file to your project. You may give it any name you like.
Select Yes to configure an Objective-C bridging header.
Delete the temporary Objective-C file you just created.
In the projectName-Bridging-Header.h file just created, add this line:
'#import < GoogleMaps/GoogleMaps.h >'
Edit the AppDelegate.swift file:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
GMSServices.provideAPIKey("AIza....") //iOS API key
return true
}
Follow the link for full sample
Upvotes: 2
Reputation: 3223
I imported in some files from bridgin header files from cocoapods not in a proper way.
Instead of importing
#import <SomeCocoaPod/SomeCocoaPod.h>
I wrote
#import "SomeCocoaPod.h"
And this was my HUGE mistake
Upvotes: 3
Reputation: 6465
Amongst the other fixes, I had the error come up when I tried to do Product->Archive. Turns out I had this :
Objective-C Bridging Header
Debug (had the value)
Release (had the value)
Any architecture | Any SDK (this was blank - problem here!)
After setting it in that last line, it worked.
Upvotes: 0
Reputation: 1030
"we need to tell Xcode where to look for the header files we’re listing in our bridging header. Find the Search Paths section, and change the project-level setting for User Header Search Paths, adding a recursive entry for the ‘Pods’ directory: Pods/** " http://swiftalicio.us/2014/11/using-cocoapods-from-swift/
Upvotes: 10
Reputation: 11
After initial few days of struggle, I finally managed to successfully integrate Facebook signup to my iOS app. Here are the steps(I am assuming you have already installed Facebook SDK v4.1 or above in your machines):
Add informations in the pList as mentioned here
Build your app. And wohoo! no compile time errors.
Upvotes: 1
Reputation: 370
Find the path at:
Build Settings/Swift Compiler-Code Generation/Objective-C Bridging Header
and delete that file. Then you should be ok.
Upvotes: 30
Reputation: 2446
I actually created an empty OSX Source Objective C file under the project (where all my swift files are).
I added the imports and then deleted the .m file.
Upvotes: 0
Reputation: 8288
For me it was because I forgot to add it to the Target's Build Settings.
Upvotes: 9
Reputation: 2287
for others who have troubles to add swift class into objective-c project. this is what work for me :
and that's it. now create the swift class in your code like it was objective-c.
Upvotes: 3
Reputation: 39470
This will probably only affect a small percentage of people, but in my case my project was using CocoaPods and one of those pods had a sub spec with its own CocoaPods. The solution was to use full angle imports to reference any files in the sub-pods.
#import <HexColors/HexColor.h>
Rather than
#import "HexColor.h"
Upvotes: 18
Reputation: 324
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.
It's the fun part about using beta software.
Upvotes: 6