指示に従って、ブリッジヘッダーを作成してプロジェクトに追加しました。残念ながら、以下のエラーが発生しました。
:0:エラー:Objective-Cのヘッダ '--- path - to --- header/.... h'をインポートできませんでした
ビルド設定で、ブリッジヘッダーの場所にヘッダー検索パス文字列を追加しましたが、役に立ちませんでした。
誰もがこの問題を経験しましたか?
エラーが発生しているフォルダにファイルを追加するように注意してください。私は同じ間違いをした、あなたがXcodeからファイルを作成するならば、それはフォルダーに行くでしょう:Project-> Project-> Header.h
そしてXcodeはProject-> Header.hを探しています
それはあなたがあなたのプロジェクトフォルダ(ProjectName-> ProjectNameFolder)の中にファイルを置く必要があることを意味します!
それが役立つことを願っています;)
更新:私はあなたが何を意味しているのか私にはわからないが、あなたの問題を解決するためにこれを試してみてください。
1。これまでに作成したすべてのブリッジングファイルを削除します。
2。プロジェクトのメインフォルダを選択し、新しいファイル - > iOS - > Header fileをクリックします。
3。作成したヘッダファイルにインポートを書き込みます。
4。 Xcode-> Build Settings内のプロジェクトを選択し、検索フィールドにbridgingと入力して、キーSwift_OBJC_BRIDGING_HEADERにヘッダファイルの名前またはそのパスを入力します。
この手順に従うと、ヘッダファイルは正しい場所に作成されます。
:Dが役立つことを願っています!
私の場合、これは循環参照の結果として実際にはエラーでした。私はブリッジングヘッダにインポートされたクラスを持っていました、そしてそのクラスのヘッダファイルはSwiftヘッダ(<MODULE_NAME>-Swift.h
)をインポートしていました。これは、Swiftで宣言されたクラスをObj-Cヘッダーファイルで使用する必要があるため、解決方法は単純に@class
宣言を使用することでした。
そのため、基本的に「ブリッジヘッダーのインポートに失敗しました」というエラーが表示され、その上のエラーには<MODULE_NAME>-Swift.h
ファイルが見つからないという説明があります。
このファイルを調べると、ヘッダー内で-Swift.hが宣言されていることがわかりました。このインポートを実装に移動することで問題は解決しました。だから私はオブジェクトを使用する必要があった、それをSwiftで定義されたMyObject
と呼ぶことにしましょう。
@class MyObject;
パスを見つけます。
ビルド設定/ Swiftコンパイラ - コード生成/ Objective-Cブリッジヘッダ
そのファイルを削除します。それなら大丈夫でしょう。
これはおそらくごく一部の人々にしか影響しませんが、私の場合、私のプロジェクトではCocoaPodを使用していましたが、そのうちの1つに独自のCocoaPodを持つサブスペックがありました。解決策は、サブポッド内のファイルを参照するためにフルアングルインポートを使用することでした。
#import <HexColors/HexColor.h>
のではなく
#import "HexColor.h"
派生データを削除したので修正しましたが、古いコミットからチェックアウトしても同じ問題が発生します。
あなたはそのオプションフォームWindow-> Projectsに到達することができます。
「Xcodeにヘッダーファイルを探す場所を指示する必要があります。 'ブリッジングヘッダーにリストしています。[Search Paths]セクションを見つけ、Userのプロジェクトレベル設定を変更します。ヘッダ検索パス、 'Pods'ディレクトリの再帰的エントリを追加:Pods /** " http://swiftalicio.us/2014/11/using-cocoapods-from-Swift/
私にとっては、それをターゲットのビルド設定に追加するのを忘れたからです。
私もこの問題を経験しましたが、残念ながらSDK + Xcodeのバグにすぎません。これと、私がCloudKitで抱えていた他のいくつかの問題について、WWDCのエンジニアと話しました。これらのバグはXcodeの次の種で解決されるでしょう。
それはベータソフトウェアを使うことについての楽しい部分です。
swiftクラスを客観的-cプロジェクトに追加するのが困難な人にとっては。これは私のために働くものです:
以上です。 Objective-Cのように、コードにSwiftクラスを作成します。
Cocoapodからのブリッジヘッダファイルからいくつかのファイルをインポートしましたが、正しくありませんでした。
インポートする代わりに
#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
}
リンクをたどる フルサンプル
自分のアプリにToday拡張機能を追加していたときに、このようなエラーが発生しました。拡張機能のビルドターゲットは、私のアプリのビルドターゲットと同じ名前のブリッジヘッダーで生成されました。拡張子が私のアプリのブリッジヘッダーに記載されているファイルを参照していないため、これはエラーの原因となっていました。
あなたがする必要がある唯一の事は拡張のためのブリッジングヘッダの名前を削除または変更することであり、そしてすべてはうまくいくでしょう。
これが役立つことを願っています。
私は違う理由で同じ問題を抱えています、ここが私の場合ですスライドメニューを含める必要があるプロジェクトを構築します、私はそれにアプローチするためにSWRevealViewController libを使用しています
ライブラリファイルをインポートすると、.h && .mファイルのサポートファイルの下にサブフォルダー(SWRevealViewController)を追加すると、2つのエラーが発生し、cant import bridgeとSWRevealViewController.hが見つかりません。
修正方法
ファイルを直接Supporting Filesに移動(サブフォルダを削除)すると、SWRevealViewController.mが自動的にBuild Phases - > Compile Sourcesに追加され、問題はなくなりました。
最初の数日間の闘争の後、ついに私はFacebookのサインアップを私のiOSアプリにうまく統合することに成功しました。手順は次のとおりです(私はあなたがすでにFacebook SDK v4.1以降をあなたのマシンにインストールしていると仮定しています):
前述のようにpListに情報を追加します。 ここ
アプリをビルドします。そして、うーん!コンパイル時エラーなし。
他の修正の中でも、Product-> Archiveを実行しようとしたときにエラーが発生しました。私がこれを持っていたことが判明:
Objective-C Bridging Header
Debug (had the value)
Release (had the value)
Any architecture | Any SDK (this was blank - problem here!)
その最後の行にそれを設定した後、それは働いた。
Precompile Bridging HeaderをNoに設定すると問題が解決します。
私は実際にプロジェクトの下に空のOSX Source Objective Cファイルを作成しました(ここに私のすべてのSwiftファイルがあります)。
インポートを追加してから。mファイルを削除しました。
上記の解決策では解決できない同様の問題がありました。私のプロジェクトは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'
だから解決策は非常に簡単でした。 Podsプロジェクトの場合は、アクティブアーキテクチャのみをビルドフラグをいいえに変更すると、元のエラーがなくなりました。