45

Xcode プロジェクトに新しい Test ターゲットを追加しました。私のプロジェクトには Swift コードと Objective-C コードがあり、ブリッジング ヘッダーがあります。ブリッジ ヘッダーを UnitTesting のビルド設定に追加するか、実行するimport MyTargetと、次のエラーが発生します。

ブリッジング ヘッダーのインポートに失敗しました

私はもう試した:

  • プロジェクト、単体テスト、およびメイン ターゲットのビルド設定にブリッジ ヘッダーを追加します。
  • に変わりdefines modulesますYes
  • ブリッジング ヘッダー ファイルをルート フォルダーに移動します。

また、ビルドして正常に動作するサンプル プロジェクトを作成してみました。私が持っているすべてをクリーンな新しいプロジェクトに引き継ぐことは、現時点ではオプションではありません。

4

5 に答える 5

53

CocoaPods をパッケージマネージャとして使用する場合、検索パスなどを設定する必要があります。簡単な方法を与えると、

これを Podfile に追加してみてください:

target 'YourProductTests' do
    inherit! :search_paths
    # Pods for testing
end

pod install

わたしにはできる。

上記の解決策がうまくいかない場合は、手動で設定してみてください。

  1. Test target -> Build Setting -> tab: All & Combined -> Swift Compiler -Code Generation -> Objective-C Bridging Header をクリックします: xxx-bridging-header を追加します

  2. 「検索パス」にチェックを入れ、主な対象に応じてFramework Search PathHeader Search Paths、の値を設定します。Library Search Pathここで一部の検索パスが失われる可能性があります。手動で再度追加してください。

于 2016-07-28T08:14:10.470 に答える
6

この時点で、import MyTarget単体テストを Swift で動作させる必要はありませんでした。

一般的なソリューション

  • 試してみたと思いますが、ブリッジ ヘッダーをアプリ ターゲットとテスト ターゲットに同時に追加したかどうかは不明でしたか?
  • 理想的ではないかもしれない別のオプションは、テスト ターゲットにブリッジ ヘッダーを追加して、実際に 2 つのブリッジ ヘッダーを持つようにすることです。それらは同じように見えるはずであり、良いテストになるでしょう.
  • を使用$(SRCROOT)してブリッジング ヘッダー パスを参照する場合は、正しいパスに評価されていることを確認してください。
  • 他のすべてが失敗した場合は.xcodeproj、作業中のプロジェクトのファイル diff を実行し、異なる可能性のある関連する値を一致させる必要があります。

ブリッジング ヘッダー システムは完璧ではありませんが、私が遭遇したいくつかの問題を以下に示します。

于 2015-05-23T17:12:50.853 に答える