Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Could not build Objective-C module, when using swift in objective-c module

In an iOS application I have a subproject (not cocoapods) in which I have included a swift file and ObjC file (that is used by the swift file). XCode automatically created a bridging file but could not build it because apparantly bridging is not allowed in a framework. The workaround that I used was to add the objective-c header to the umbrella file and it worked. Now I need to use a swift class from ObjC. I have define module to set to YES, the generated file Framework-Swift.h . But when I try to import it in objective-c i get

Could not build Objective-C module

The closest I got after some googleing was this answer:

Ah gotcha. It looks like you're building a mixed Swift & Objective-C pod - if that's the case, Xcode will try to import within the generated -Swift.h header. You'll need to create the header manually and add imports for the Objective-C classes that you want to expose to Swift.

CocoaPods generates an umbrella header automatically and imports it within the .modulemap, but Xcode doesn't use that when generating the -Swift.h header

But I am unsure what header needs to be created manually. Any ideeas or pointer about using swift in an objective-c framework ? In both ways ?

like image 526
user426132 Avatar asked Dec 11 '22 03:12

user426132


1 Answers

I also had similar issue when using Swift pods in my Swift project containing several targets. No Objective-C code at all. I tried to clear build folder, pods cache, derived data - nothing worked.

Solution:

Open the Build Settings for a target that contains your module code. Set the "Install Objective-C Compatibility Header" to "No"

enter image description here

like image 111
zasia Avatar answered Feb 15 '23 09:02

zasia