I am trying to add objective-c libraries to my Swift 3 project (Xcode 8 IDE). But objective c interface header is not getting generated automatically. I tried to add bridging header manually but showing linking error saying bridging header .h is not found. Any help would be appreciated :)
5 Answers
Here the solution for the issue.
- Create a new header file and name it like "your project name-Bridging-Header.h". The file must be saved to your project folder
- Select your xcode project -> select your build target -> select build settings -> click the "all" option at the top -> search for Swift Compiler - General
- Select Objective-C Bridging Header item and double click on its value field (right side of the same row). One popup would appear and there you can enter your bridging header file path (Follow the below steps to provide header file path).
Open finder and drag and drop your bridging header file to the popup. Now it will create an absolute path for bridging header. To make relating path, you can give the path as $(PROJECT_DIR)/$(PROJECT_NAME)/$(PROJECT_NAME)-Bridging-Header.h
Click outside for the value get saved. Done!! Now you can import your Objective-C libraries (eg. #import "SVProgressHUD.h") to bridging file and start using it in your swift project.
Hope this would be helpful to someone. :)

- 46,496
- 21
- 150
- 195

- 5,008
- 3
- 35
- 39
-
2Is that different from the procedure described in http://stackoverflow.com/a/24005242/1187415, starting at *"In some situations, particularly when working with ObjC frameworks, ..."* ? – Martin R Sep 21 '16 at 11:52
-
5If you drag and drop, you'll get an absolute path, you can replace the project path with $(SRCROOT) to make it relative – Whakkee Nov 23 '16 at 09:21
-
4what if there is no "Swift Compiler - General" ? – Zaporozhchenko Oleksandr Feb 12 '17 at 20:29
-
9@Aleksandr I have been spending the last hour searching for an answer to this issue as I had the same problem.... **Select "ALL" at the top** and you should be able to find it. – JTing Feb 12 '17 at 23:59
-
@JohanTingbacke Great ! You saved me :) And it's kinda embarrassing that problem was so easy to resolve) – Zaporozhchenko Oleksandr Feb 13 '17 at 02:20
-
Root directory of my project name contains spaces between words. And I have put bridging header file under main target. So while adding bridging header file to "Objective-C Bridging Header", I will also have to write root directory name and it contains spaces. Could you say how should I specify my bridging header file name? – Apurva Sep 23 '17 at 07:55
-
1An even easier way is to drop an empty .m file onto the project. Xcode will now prompt you to create the bridging header automatically. – EricS Nov 17 '17 at 22:32
Objective C Header file creation steps
File -> New -> File -> Header File
Name your Header file like this yourAppName-Bridging-Header
Now click on your Project -> Build Settings
Change from Basic to All
Search Bridging
You will get the search result as shown in the below image
after Adding
In that double click the right of Objective-C Bridging Header and enter as follows
eg, yourAppName/yourAppName-Bridging-Header.h
You need to import as follows
- Thats All
Happy Coding :)

- 1,278
- 13
- 13
It seems easiest to simply create a new Objective-C File and have Xcode take care of all the nitty gritty of setting up everything. Once that's done, you can delete the Objective-C file.
- Right Click in the project explorer and choose new file
- Selected Objective-C File
- Name it
delete_me
or something - You'll get prompted to have a bridging file created and say yes
- Delete the file you created (perhaps
delete_me.m
)

- 6,091
- 2
- 32
- 34
In the case of multiple targets, make sure the swift classes are members of that target, or else the file will not be generated.
Xcode 8.3

- 355
- 2
- 7
Swift 5
Easy way
1--cmd+n
then select
2--Objective-C File (name your file it like this YourAppName-Bridging-Header)
if popup arrive for bridging header then select
3--YES
if not
//MARK:-click on your
4--Project->BuildSettings
//MARK:- in search
5--Bridging Header
6--Double click and paste bottom line and done
$(PROJECT_DIR)/$(PROJECT_NAME)/$(PROJECT_NAME)-Bridging-Header.h

- 5,361
- 1
- 43
- 34