web-dev-qa-db-ja.com

Xcodeは自動的にブリッジングヘッダーを作成しませんか?

Obj-CファイルをSwiftプロジェクトにインポートすると、Xcodeは期待どおりにブリッジングヘッダーファイルを作成するように自動的に促しました。ただし、いくつかの変更を加えるために両方のファイルを削除(ゴミ箱に移動)しましたが、Obj-Cファイルをもう一度インポートしようとすると、プロンプトが表示されなくなりました。理由は何ですか?私はこの同じシナリオを別のプロジェクトでもテストしました。Xcodeの自動作成されたブリッジングヘッダーを削除すると、プロンプトが再び表示されることはありません。どうしてこれなの?

41
John Durand

問題の理由は、Xcodeビルド設定が自動生成されたブリッジングヘッダーファイルへのパスを保持しているためです。プロジェクトディレクトリにヘッダーファイル(ProjectName-Bridging-Header.h)がまだ存在するため、ビルドエラーを取得できません。

解決方法:

プロジェクトターゲットをクリックして、ビルド設定タブに移動します(- chooseallbasic )の代わりに、Bridging Header。 Xcodeが生成したパスエントリを確認できます。それを選択して、削除ボタンをクリックします。

また、XcodeプロジェクトディレクトリからXcode自動生成ブリッジングヘッダーファイル(ProjectName-Bridging-Header.h)を必ず削除してください。

次に、Obj-Cファイルをもう一度インポートしてみます。期待どおりにブリッジングヘッダーファイルを作成するプロンプトが表示されます。

enter image description here

88
Shamsudheen TK

ファイル->新規ファイル->ヘッダーファイル

YourApp-Bridging-Headerとして保存します

[ビルド設定]に移動し、[Objective-Cブリッジングヘッダー](以前の人が言ったように)を見つけて、次のようにブリッジングヘッダーに渡します:YourApp/YourApp-Bridging-Header.hここで、 'YourApp /'はアプリの名前です。 「Your App /」などの空白を含めることができます。

私の場合、xCode 7.3.1では動作します

21

上記で言及/提案したように、Xcodeでブリッジングヘッダーを作成する別の方法があります。ここでは、Bridgeを作成する最良かつ最も簡単な方法を紹介します。

  1. Image1は、現時点ではブリッジングが存在しないことを示しています。

Image1

  1. Image2は、ポップアップをコピーした後、objective-cヘッダーファイルを含むフォルダーをコピーしたことを示しています。

Image2

  1. Image3はポップアップメッセージを表示します。しかし、終了ボタンを押した後、まだブリッジが存在しないことに気付くでしょう。参照については、image2を参照してください。

Image3

  1. Image5&6では、objective-cヘッダーファイルをドラッグアンドドロップするだけで、ポップアップメッセージが表示されます。

Image4

  1. 完了ボタンを押すと、次のようなメッセージが表示されますObjective-Cブリッジングヘッダーを設定しますか? [はい]ボタンを押すと、ブリッジヘッダーが表示されます(画像5を参照)。

Image5

ヘッダーを1つのグループ内に保持する場合は、New Groupを使用し、そのグループにファイルをドラッグ&ドロップします。

Image6

フォルダーを作成しないでください。作成しないと、エラーが発生します。

7
Kumar

プロジェクト設定->ビルド設定の下を見て、User-Definedセクションまで下にスクロールし、Swift_OBJC_BRIDGING_HEADERというキーがあり、値があるかどうかを確認します。そこにある場合は、おそらく既にあると考えられます。その場合は、同じ名前でファイルを再作成してください。

4
Fonix
  1. ブリッジファイルプロジェクトで1回だけプロンプトを表示します。

  2. 誤ってファイルを削除した場合は、新しいブリッジファイルを作成する必要があります。それは同じだ。

  3. File->New File->Header Fileに移動すると、名前はYourProjectName-Bridging-Headerである必要があります。そうでない場合は、認識できません。

3
ronan

手動で構成する場合は、[ビルド設定]に移動し、選択を[基本(既定)]または[カスタマイズ]から[すべて]に変更します。

空のフィールドは非表示になっているため、平均的なエ​​ンドユーザーが操作しやすくなるため、ブリッジングヘッダーを追加するプロンプトが表示されない場合は、手動で見つけるのが難しい場合があります。また、検索オプションには非表示フィールドは含まれません。

すべてに変更し、Swiftコンパイラ-全般セクションに「Objective-C Bridging Header」の子設定が表示されます

0
Unome