web-dev-qa-db-ja.com

Swift "Bridging-Header.h"ファイルでは、.SwiftファイルでObjective-Cクラスをインスタンス化できません

X-codeが自動的にブリッジングヘッダーを作成しようとすると、毎回クラッシュするため、ブリッジングヘッダーを手動で作成する方法の指示に従いました。 (.hファイルを作成し、<#PROJECT_NAME> -Bridging-Header.hという名前を付け、必要なすべての.hファイルをインポートしますか?)

問題は、そのヘッダーに含まれている.Swiftファイルでクラスをインスタンス化しようとしても何も起こらない(クラスが存在しないと言っている)また、ブリッジングヘッダーでは、ファイル名を自動補完しないように見えるそれらを含めてみて、何かが正しくリンクしていないと信じるようにします。

誰かがこれに遭遇しましたか?誰でもそれを修正する方法を知っていますか?

21
Andy Tsen

ターゲットのビルド設定に追加する必要があります。

  1. Xcodeでは、ターゲットのビルド設定に移動して、一番下までスクロールすると、「Swift Compiler-Code Generation」セクションが見つかります。

  2. 「Objective-Cブリッジングヘッダー」を<#PROJECT_NAME>-Bridging-Header.hに設定します

  3. 「Objective-C互換性ヘッダーのインストール」の正しい値はわかりませんが、yes/noであるため、最初に機能しない場合は切り替えることができます。

73
Nate Cook

自分でブリッジングヘッダーを作成しようとしましたが、何らかの理由でXcodeはそれを気に入らなかった。だから私は自分のカスタムのものを削除し、Obj Cファイルをインポートして、Xcodeにそれを作成したいかどうか尋ねました。

はいをクリックしましたが、うまくいきました!

8
Sean

1)「FMDB-Bridging-Header.h」というファイルを作成します

このファイル内に次を入力します。#import "FMDB.h"

3)Build Settings-> Swift Compiler-Code Generation-Add to 'Objective-C Bridging Header':FMDB-Bridging-Header.h

または、プロジェクト内のフォルダー内に配置された場合:

FolderName/FMDB-Bridging-Header.h

4
K.D
  1. 「[your-project-name] -Bridging-Header.h」という名前のヘッダーファイルをプロジェクトに追加します

  1. [ビルド設定]> [ビルドオプション]に移動し、[埋め込みコンテンツに含まれるSwiftコード]を[はい]に設定します enter image description here

  2. [ビルド設定]> [リンク]に移動し、「@ executable_path/Frameworks」をRunpath Search Pathsに追加します enter image description here

今すぐプロジェクトをビルドしてください!

1
Furqan Khan

Swift Compiler Build key 'Objective-C]の文字列値に「MyProject/MyProject-Bridging-Header.h」のように、プロジェクトルートを含むブリッジングヘッダーの名前を設定するのに役立ちます。ブリッジングヘッダー '

0
Nicola Coppola