Xcode 6 / Beta 4: using bridging headers with framework targets is unsupported

As the error states, bridging headers are not allowed in Frameworks. The Importing Code from Within the Same Framework Target section of the Mix & Match apple documentation hints at this. As they say, you need to “In your umbrella header file, import every Objective-C header you want to expose to Swift”.

However, I discovered that you may also need to make those specific headers public as well. This answer reviews why and how to do that: Swift compiler error: “non-modular header inside framework module”.

So, do this:

  1. Remove your bridging header file.
  2. Remove references to the bridging header file in the build settings for the framework
  3. Add the necessary headers to your umbrella file ([ProductName].h)
  4. Make the included files public in the framework’s “Headers” section of its “Build Phases”.
  5. Clean and rebuild.

Note: The “umbrella header file” is a file (named [ProductName].h) that generally represents all public headers of a framework. It is usually just a list of #import statements to other headers contained in the framework. In Xcode, if you open UIKit.h, you will see a good example of an umbrella file.

Leave a Comment