Getting "File Not Found" in Bridging Header When Importing Objective-C Frameworks into Swift Project

Getting file not found in Bridging Header when importing Objective-C frameworks into Swift project

Found a solution:

  • The "Objective-C Bridging Header" setting (aka SWIFT_OBJC_BRIDGING_HEADER) must be set at the Target level, and NOT the Project level. Be sure to delete the setting value at the Project level.

(to me, it seems like an Xcode bug, since I don't know why it fixes it).

Swift Bridging Header File Not Found

I suspect the spaces are causing problems.

And the import line in the bridging header should be something like this:

#import <MZFormSheetPresentationController/MZFormSheetPresentationController.h>

Update:

I assume you are trying to run the Example from here: https://github.com/m1entus/MZFormSheetPresentationController

It seems like that bridging header file was accidentally removed (or was never there).

You can create your bridging header by following the instructions here: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

with the following contents:

#import <MZFormSheetPresentationViewController/MZFormSheetPresentationController.h>

Update 2:

Can you change this line: #import <MZFormSheetPresentationController/MZFormSheetPresentationController Swift Example-Bridging-Header.h>

to

<MZFormSheetPresentationViewController/MZFormSheetPresentationController.h>

“file not found” in Bridging Header when importing Objective-C frameworks into Swift project by CocoaPod

My solution is :

Do not import the ObjC framework in bridging header file, just import the framework in the files in which the framework is needed. just like:

import xxxframework

Xcode does not find Swift bridging header file in some files

I finally came up with the solution on my own : the project.pbxproj file was kind of corrupted after some git merge I guess. Some files of the project were referenced twice in that file, so I deleted the ones I thought being bad (maybe randomly chosen is closer from the truth).

Now it's working like a charm.

In fact this had no effect on the project until I tried to migrate files to Swift !

It would be a great idea to have a tool or function in XCode to reset this project.pbxproj file to the current things we have.

Xcode can't find Bridging header when loading Framework

Frameworks with mixed Swift and Objective-C code do not need (and should not have) a bridging header.

First make sure that your framework's build settings includes "Defines Module: Yes".

Then, your framework should already have an umbrella header, this is the header with the same name as your framework with stuff like this in it

//! Project version number for MyFramework.
FOUNDATION_EXPORT double MyFrameworkVersionNumber;

//! Project version string for MyFramework.
FOUNDATION_EXPORT const unsigned char MyFrameworkVersionString[];

Any Objective-C stuff that you want to be visible to Swift needs a header with public membership which is imported into that umbrella header like this #import <MyFramework/MyHeaderName.h>. Note that you need to apply this rule recursively: if you import an Objective-C header in the umbrella header, anything it imports also needs to be public and in the umbrella header.

This can be a little tricky if some of your Objective-C headers have unnecessary imports, or import stuff that you don't want to be public in your framework. You may need to restructure you code a bit so that you have a clear separation between public and private headers.

If you do that, all of that public Objective-C code should be automatically usable in the framework's Swift code, without any bridging header.

Official docs here: https://developer.apple.com/documentation/swift/imported_c_and_objective-c_apis/importing_objective-c_into_swift

After importing Objective C Framework into my Swift project, my project does not recognise my header file in my Bridging file

I would review the setup for AWS at their website. They even have a section that details using with Swift iOS9.

Among other things, if you are using the Frameworks manual integration, verify that step 4 is complete.

Under the Build Phases tab in your Target, click the + button on the
top left and then select New Run Script Phase. Then setup the build
phase as follows. Make sure this phase is below the Embed Frameworks
phase.:

Shell /bin/sh

bash
"${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/AWSCore.framework/strip-frameworks.sh"

Show environment variables in build log: Checked Run script only when
installing: Not checked

Input Files: Empty Output Files: Empty

You might want to install and use Carthage to make this easier. Head over to the Homebrew website then after installing homebrew you'd run brew install carthage from the command line. After that go back to the link above and follow the Carthage instructions.

Secondly, I would take another walkthrough of the Apple Documentation on Working with the bridging header files to see if any of the edge cases apply and just as a sanity check.

Third, if that doesn't work, I'd just try creating an empty Swift project and walk through the steps again using one of the techniques above. There might be something wrong with one or more settings in your project files or the file itself might be corrupt.

BTW - The product bundle identifier should probably be following the convention of com.yourdomain.YourProductName.



Related Topics



Leave a reply



Submit