[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

この投稿へのコメント

  1. takahashi said on 2015年11月17日 at 9:47 AM

    数少ない貴重な記事ありがとうございます。
    私はframework内でAWSのSDKを参照させたいと思っています。
    上記の話の確認で、一度ビルドをするとModules-Module.modulemapが自動作成されますが、それを修正するということでしょうか。
    よろしくお願いします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL