手順に従って、ブリッジヘッダーを作成し、プロジェクトに追加しました。残念ながら、次のエラーが発生しました:
:0:エラー:Objective-Cヘッダー '--- path--to --- header / .... h'をインポートできませんでした
ビルド設定で、ブリッジヘッダーの場所にヘッダー検索パス文字列を追加しましたが、何も役に立ちませんでした。
誰かがこの問題を経験しましたか?
手順に従って、ブリッジヘッダーを作成し、プロジェクトに追加しました。残念ながら、次のエラーが発生しました:
:0:エラー:Objective-Cヘッダー '--- path--to --- header / .... h'をインポートできませんでした
ビルド設定で、ブリッジヘッダーの場所にヘッダー検索パス文字列を追加しましたが、何も役に立ちませんでした。
誰かがこの問題を経験しましたか?
回答:
エラーの原因となっているフォルダーにファイルを追加するように注意してください。同じ間違いを犯しました。Xcodeからファイルを作成すると、Project-> Project-> Header.hフォルダーに移動します。
そしてXcodeはProject-> Header.hを探しています
つまり、ファイルをプロジェクトフォルダー(ProjectName-> ProjectNameFolder)内に配置する必要があります。
それが役に立てば幸い;)
更新:どういう意味かわかりませんが、これを試して問題を解決してください
。1. これまでに作成したブリッジファイルをすべて削除します。
2.プロジェクトのメインフォルダーを選択し、新しいファイル-> iOS->ヘッダーファイルをクリックします。
3.作成したヘッダーファイルにインポートを書き込みます。
4. Xcode-> Build Settings内のプロジェクトを選択し、検索フィールドに「bridge」と入力して、キーSWIFT_OBJC_BRIDGING_HEADERにヘッダーファイルの名前またはそのパスを入力します。
この手順を実行すると、ヘッダーファイルが正しい場所に作成されます。
:Dそれが役に立てば幸い!
私の場合、これは循環参照の結果として実際にはエラーでした。ブリッジングヘッダーにクラスをインポートしましたが、そのクラスのヘッダーファイルはSwiftヘッダー(<MODULE_NAME>-Swift.h
)をインポートしていました。Obj-CヘッダーファイルではSwiftで宣言されたクラスを使用する必要があるため、これを行っていました@class
。解決策は、単に宣言型を使用することでした。
つまり、基本的には「ブリッジヘッダーのインポートに失敗しました」というエラーが表示され、その上のエラーは<MODULE_NAME>-Swift.h
ファイルが見つからないというもので、特定のObj-Cヘッダーファイル(つまりビューコントローラー)を指すエラーでした。
このファイルを調べると、ヘッダー内で-Swift.hが宣言されていることがわかりました。このインポートを実装に移動することで問題は解決しました。したがって、オブジェクトを使用する必要がありMyObject
、Swift で定義されたオブジェクトを呼び出すことができるので、ヘッダーを次のように変更しました
@class MyObject;
パスを見つける:
ビルド設定/ Swiftコンパイラ-コード生成/ Objective-Cブリッジヘッダ
そのファイルを削除します。その後、大丈夫です。
これはおそらく少数の人々にのみ影響を及ぼしますが、私の場合、私のプロジェクトはCocoaPodsを使用しており、それらのポッドの1つは独自のCocoaPodsを持つサブ仕様を持っていました。解決策は、全角インポートを使用してサブポッド内のファイルを参照することでした。
#import <HexColors/HexColor.h>
のではなく
#import "HexColor.h"
「ブリッジヘッダーでリストしているヘッダーファイルを探す場所をXcodeに指示する必要があります。検索パスセクションを見つけ、ユーザーヘッダー検索パスのプロジェクトレベルの設定を変更して、「ポッド」の再帰エントリを追加しますディレクトリ:Pods / ** " http://swiftalicio.us/2014/11/using-cocoapods-from-swift/
私もこの問題を経験しましたが、悲しいことに、SDK + Xcodeのバグにすぎません。私はWWDCのエンジニアに、これとCloudKitで発生していた他のいくつかの問題について話しました。これらのバグは、Xcodeの次のシードで対処されます。
ベータ版ソフトウェアを使用することの楽しい部分です。
迅速なクラスをobjective-cプロジェクトに追加するのに問題がある他の人のために。これは私のために働くものです:
以上です。今度は、目的のcのように、コード内に迅速なクラスを作成します。
cocoapodsのbridginヘッダーファイルからいくつかのファイルを適切にインポートしていません。
インポートする代わりに
#import <SomeCocoaPod/SomeCocoaPod.h>
私が書いた
#import "SomeCocoaPod.h"
そして、これは私の大きな間違いでした
一時的なObjective-Cファイルをプロジェクトに追加します。好きな名前を付けることができます。
[はい]を選択して、Objective-Cブリッジヘッダーを構成します。
作成した一時的なObjective-Cファイルを削除します。
作成したprojectName-Bridging-Header.hファイルに、次の行を追加します。
'#import <GoogleMaps / GoogleMaps.h>'
AppDelegate.swiftファイルを編集します。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
GMSServices.provideAPIKey("AIza....") //iOS API key
return true
}
最初の数日間の苦労の後、私はようやくFacebookサインアップを私のiOSアプリにうまく統合することができました。手順は次のとおりです(マシンにFacebook SDK v4.1以上がすでにインストールされていると想定しています)。
私はさまざまな理由で同じ問題を抱えていますが、スライドメニューを含める必要があるプロジェクトをビルドする場合は、 SWRevealViewController libを使用してそれに取り組みます
ライブラリファイルをインポートするときに、.h && .mファイルのサポートファイルの下にサブフォルダー(SWRevealViewController)を追加すると、2つのエラーが発生し、ブリッジをインポートできず、SWRevealViewController.hが見つかりません。
修正方法
ファイルを直接サポートファイルに移動すると(サブフォルダーを削除)、SWRevealViewController.mがビルドフェーズに自動的に追加されます->ソースのコンパイルと問題がなくなりました
アプリにToday Extensionを追加するときに、この種のエラーが発生しました。拡張機能のビルドターゲットは、アプリのビルドターゲットと同じ名前のブリッジヘッダーで生成されました。拡張機能がアプリのブリッジヘッダーにリストされているファイルを表示しないため、これがエラーの原因でした。
あなたがする必要がある唯一のことは、拡張のブリッジヘッダの名前を削除または変更することであり、すべてうまくいきます。
これが役立つことを願っています。
上記の解決策では解決できない同様の問題がありました。私のプロジェクトではCocoaPodsを使用しています。エラーとともに、次のメッセージの警告が表示されることに気付きました。
Uncategorized: Target 'Pods' of project 'Pods' was rejected as an implicit dependency for 'Pods.framework' because its architectures 'arm64' didn't contain all required architectures 'armv7 arm64'
したがって、解決策は非常に簡単でした。ポッドプロジェクトの場合、Build Active Architecture OnlyフラグをNoに変更すると、元のエラーはなくなりました。