同様の問題に対処する多くの質問と回答を読みましたが、解決策をまだ見つけていません。誰かが光を放つことができれば、それは素晴らしいことです。
Swiftプロジェクトを作成し、Objective-Cと組み合わせたいと思います。Chartboost.hファイルを#importしようとすると、「ブリッジングヘッダーのインポートに失敗しました」が発生します。 、ブリッジヘッダーファイルに何も含まれていない限り、Xcodeはそれを見つけて問題を引き起こしません。
#import <Chartboost/Chartboost.h>
「Swift Compiler Error-関数定義はここでは許可されていません」という他の38のエラーとともにエラーを受け取ります。
フレームワークを正しくインポートしました。そして、私のフレームワーク検索パスは正しいです。そして、Chartboostフレームワークをインポートするときだけです。 UIKitとFoundationは正常に機能します。
この問題に至るまでの手順を次に示します。最初に、新しいObj-Cファイルを作成し、「Xcodeからブリッジヘッダーを構成できるかどうかを確認するポップアップが表示されたら、[はい]をクリックしました。 -Bridging-Header.h "
次に、Objective-CブリッジングヘッダーパスがSwift Compiler-Code Generation。)で正しいことを確認しました。
非常に特定のパス/Users/me/Desktop/FunFacts/FunFacts-Bridging-Header.hを入力しても、「インポートに失敗しました」と表示されます。
また、Defines Modulesを「Yes」に設定しました(それが役立つと聞いたため)。そして、私の製品モジュール名はFunFactsです。
#importを追加しようとするとFunFacts-Bridging-Header.hのインポートに失敗するのはなぜですか?
私は2つの解決策を見つけました!
1)これは最もきれいな方法ではありませんが、インポートする代わりに、Chartboost.hファイルのすべてのコードをBridging-Header.hファイルにコピーして貼り付けます。これはうまくいきました。しかし、私はより良い方法があることを知っていたので、私は狩り続けました...
2)正しい解決策は、次にやったことだと思います。プロジェクトの(ターゲットではない)フレームワーク検索パスが空でした。そこで、先に進み、次のようにChartboost SDKへのパスを追加しました:/ Users/me/Desktop/Apps/SDKs/Chartboost
今では問題なくビルドおよび実行され、すべてをブリッジングヘッダーにコピーアンドペーストする必要はありませんでした。必要なのは
#import <Chartboost/Chartboost.h>
誰かが同様の問題を抱えている場合は、質問で私がしたことを読んでから、この回答でフォローアップしてください。
私は別の投稿でこれに答えました: Chartboost XCode 6.1との統合の問題
一部のポッドとライブラリは、コードに既に含まれていると予想されるため、基本的なフレームワークをインポートしません。これは、フレームワークをインポートする方法が変更されたため、Swiftでは機能しません。ブリッジヘッダーファイルに必要なフレームワークを追加するだけです。
コンパイラがスローするエラーによって異なります。 NSObject
、NSString
などについて文句を言う場合は、ブリッジヘッダーファイルの先頭に#import <Foundation/Foundation.h>
を追加する必要があります。
UIView
、UIButton
などについて文句を言う場合は、ブリッジングヘッダーファイルの先頭に#import <UIKit/UIKit.h>
を追加する必要があります。
あなたのような問題は私を困惑させました。しかし、解決策を見つけました。
#import <Foundation/Foundation.h>
このコード(↑)をコードの前に置く必要があります。これは私の解決策です(↓)。
#import <Foundation/Foundation.h>
#import <Chartboost/Chartboost.h>
がんばろう!
それでおしまい。
どうやら、Xcodeがサードパーティのフォルダーをプロジェクトにコピーするときにそれらを逃す
私はXcode 6.3を使用しています、Swift 1.2。
答えは本当に簡単です。
プロジェクトセクションではなく、ターゲットセクションの下のSwift_OBJC_BRIDGING_HEADERにブリッジングヘッダーパスを追加していることを確認してください。
ヘッダーをブリッジするこれらの行がある場合:
#ifndef Bridging_Header_h
#define Bridging_Header_h
#endif /* Bridging_Header_h */
それらを削除するだけで、FoundationとUIKitの問題が解決されます。
1つのケースは、import <Chartboost+Extention/Chartboost+Extention.h>
の場合、
正しい方法はimport <Chartboost**_**Extention/Chartboost+Extention.h>
、
PodビルドがChartboost+Extention
のフレームワーク名をChartboost_Extention
に変更するという理由だけで