[Swift] could not build Objective-C moduleエラーを無理やり解決する方法


ネット上で見つけた解決策を幾つか試してみたのですが、効果がなかったので、無理やり解決してみました。

一般的にSwiftプロジェクトでObj-cのライブラリを読み込む場合は、Bridging Headerを作成します。
そこにObj-cのframeworkを書いてSwiftプロジェクトでも使えるようにするのですが、frameworkプロジェクト(Cocoa Touch framework)では、Bridging Header自体使えません!と怒られます。

そこで、frameworkの中にmodulesフォルダを無理やり作って、そこでObj-cのヘッダーファイルを読み込ませます。

こんな感じで、Finderでframeworkを見ると中が覗けます。
そこに、[Modules]フォルダと[module.modulemap]を作ります。

_Users_rdeguchi_Documents_Order_IoTCore-iOS

[module.modulemap]の中身は以下の様に。
framework module "フーレムワーク名" {umbrella header "フレームワーク名.h" export * module * { export * }}

後は、import フレームワーク名で読み込めます。
ぶっちゃけ、frameworkを無理やりイジるのでオススメできません。
あくまでビルド通してframeworkを使ってみたいとき限定の手法です。
他にいい方法があるかもしれないですが、これで上手くいきました、という一例ということで。

Using Swift with Cocoa and Objective-C: Swift and Objective-C in the Same Project

この記事を書いた人

Hoge Huga