Swift Bridging Header import issue

IosSwiftXcode6Bridging HeaderObjective C-Swift-Bridge

Ios Problem Overview


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'

Screenshot 1

In build settings I added header search path string to the location of bridging header, but nothing helped.

Has anyone experienced this problem?

Ios Solutions


Solution 1 - Ios

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)!

Hope that helps ;)

UPDATED: I'm not sure if I got what you mean, but try this to solve your problem:

  1. Delete all your bridging files that you created until now.
  2. Select the main folder of project and hit new file->iOS->Header file.
  3. Write your imports in the header file created.
  4. Select the project inside Xcode->Build Settings, type in search field: bridging and put in the key SWIFT_OBJC_BRIDGING_HEADER the name of your header file or the path to it!

If you follow this steps, your header file will be created at the correct location!

:D Hope that helps!

Solution 2 - Ios

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;

Solution 3 - Ios

Find the path at:

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

and delete that file. Then you should be ok.

Solution 4 - Ios

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"

Solution 5 - Ios

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 .

Solution 6 - Ios

"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/

Solution 7 - Ios

For me it was because I forgot to add it to the Target's Build Settings.

enter image description here

Solution 8 - Ios

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.

Solution 9 - Ios

for others who have troubles to add swift class into objective-c project. this is what work for me :

  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. now, add your existing swift files you want to use in your project.
  3. in the implementation file you are going to use the swift class add : #import "YOURPROJECTNAME-swift.h" . this file xcode create for you. if your xcode project is myProject then "myProject-swift.h"

and that's it. now create the swift class in your code like it was objective-c.

Solution 10 - Ios

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

Solution 11 - Ios

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

Solution 12 - Ios

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.

Solution 13 - Ios

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):

  1. Add the Facebook frameworks - FBSDKCoreKit,FBSDKLoginKit under your project.
  2. Make no changes in the Build settings as FB SDK v4.1 and above doesn't need anymore bridging header files.
  3. Import the FBSDKCorekit, FBSDKLoginKit in ViewController.swift, AppDelegate.swift files
  4. Add informations in the pList as mentioned here
  1. Build your app. And wohoo! no compile time errors.

Solution 14 - Ios

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

enter image description here

Solution 15 - Ios

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'

enter image description here

So solution was quite simple. For Pods project, change Build Active Architecture Only flag to No and original error went away.

Solution 16 - Ios

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.

Solution 17 - Ios

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.

Solution 18 - Ios

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.

Solution 19 - Ios

Set Precompile Bridging Header to No fix the problem for me.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionNikita SemenovView Question on Stackoverflow
Solution 1 - IosRenan KosickiView Answer on Stackoverflow
Solution 2 - IosDaniel GalaskoView Answer on Stackoverflow
Solution 3 - IosvariadicsView Answer on Stackoverflow
Solution 4 - IosKyle CleggView Answer on Stackoverflow
Solution 5 - IosM.OthmanView Answer on Stackoverflow
Solution 6 - IosOnnmirView Answer on Stackoverflow
Solution 7 - IosRoland KeesomView Answer on Stackoverflow
Solution 8 - Iosdouglas bumbyView Answer on Stackoverflow
Solution 9 - Iosuser1105951View Answer on Stackoverflow
Solution 10 - IosNikolay ShubenkovView Answer on Stackoverflow
Solution 11 - IosAtul KaushikView Answer on Stackoverflow
Solution 12 - IosDaisy R.View Answer on Stackoverflow
Solution 13 - IosHITESH AGARWALView Answer on Stackoverflow
Solution 14 - IosMina FawzyView Answer on Stackoverflow
Solution 15 - Iosmike.tihonchikView Answer on Stackoverflow
Solution 16 - IosGeorgi BoyadzhievView Answer on Stackoverflow
Solution 17 - IoszevijView Answer on Stackoverflow
Solution 18 - IosnevsterView Answer on Stackoverflow
Solution 19 - IosabelhoangView Answer on Stackoverflow