2017-01-23 5 views
3

ld:警告:一部のオブジェクトファイルに互換性のないObjective-Cカテゴリ定義があります。一部のカテゴリのメタデータが失われる可能性があります。 Objective-Cカテゴリを含むすべてのファイルは、同じコンパイラを使用して構築する必要があります。Firebase Analyticsが作成されていません。 ld:警告:一部のオブジェクトファイルに互換性のないObjective-Cカテゴリ定義があります。

上記の警告は、Firebase/Coreをココポッド経由でインストールしたときに表示されます。私のプロジェクトでは、プロジェクトのFIRApp.configure()を読み込むことができないため、エラーが発生すると考えられます。 GoogleService-Infor.plistをダウンロードしてプロジェクトの適切な場所に配置することをお勧めします。これは以前の別のプロジェクト(正しく動作する)で行ったため、別のプロジェクトにはObjective-Cカテゴリ警告がありませんでした。

誰でもお手伝いできますか?

私がやったプロセス:

  1. をXcodeのを閉じ、プロジェクトpodfileに 'Firebase /コア' をポッドを追加します。
  2. オープンターミナル、ターゲットプロジェクトフォルダに移動し、pod installを実行します。

    enter image description here

  3. は、端末上の警告(解決法:ちょうど常に_...のビルド設定で$(継承)を入れ、その後、問題が解決)が表示され、[!] をxxxxxx-ebooking [Debug]ターゲットはALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESビルドを上書きします設定は `Pods/Target Support Files/Pods-xxxxxx-ebooking/Pods-xxxxx-ebooking.debug.xcconfig 'で定義されています。

    • $(inherited)フラグを使用するか、または
    • は、ターゲットからのビルド設定を削除します。これはCocoaPodsのインストールで問題につながることができます。
  4. は(この問題は、ちょうどその消えます警告新しいファイルをコミットし、シンプルな)のXcodeに警告を表示:

    ファイル:///ユーザ/ YYYYYY /プロジェクト/ xxxxxx_projects/xxxxxx- ebooking/Pods/Targetサポートファイル/ xxxxxx-ebooking/Pods-xxxxxx-ebooking.debug.xcconfig:警告:ファイルが見つかりません:/ Users/yyyyyy/Projects/xxxxxx_projects/xxxxxx-ebooking/Pods-xxxxxx-ebooking/Pods-xxxxxx-ebooking.debug.xcconfigが作業コピーにありません

  5. 3、4の問題プロセスは無視してください。解決しやすいからです。最も危険な警告は:

    ld:警告:オブジェクトファイルの中には、Objective-Cのカテゴリ定義が互換性がないものがあります。一部のカテゴリのメタデータが失われる可能性があります。 Objective-Cカテゴリを含むすべてのファイルは、同じコンパイラを使用して構築する必要があります。

  6. Firebase Analyticsが作成されていません。 [FIRApp configure]を呼び出してFirebaseを設定してください。

    私のプロジェクトにFIRApp.configure()を追加しました。しかし、いくつかのビューでFAイベントを呼び出すと、ロードされました。この警告が表示されます。私はそれがObjective-Cの警告だと信じています。

+0

は、これが役立つことができます:http://stackoverflow.com/questions/39665979/xcode-8-objective- c-category-warning](http://stackoverflow.com/questions/39665979/xcode-8-objective-c-category-warning) –

+0

@RonakChaniyaraありがとう、しかし、私は前にこの記事を読んだ。私は自分のコードでこの問題を抱えていませんでした。私はGoogleアナリティクスもインストールしていませんでした...とても悲しいです。 –

+0

これはエラーでもありません。これは、互換性のないObjective-Cカテゴリ定義を持つことについての警告であり、問​​題が発生しないことです... FB構成ファイルをプロジェクトにコピーしましたか? – Jad

答えて

3

あなたの静的変数に@nonobjcを使用して発行し

1

を解決するかどうかを確認最後に、私は、おかげで私の友人のデバッグとスタックオーバーフローのコミュニティに私を助けて、すべてのバグを解決しました。

私はこの警告 "ld:warning:オブジェクトファイルの中にはObjective-Cのカテゴリ定義が互換性がない"と考えて、FIRApp.configure()の実行に失敗しました。しかし、それは2つの異なるエラーで終わる!

最初の問題は、私のプロジェクトがswift 2.2から3.0に移行する際にエラーが発生したためです。それはAppDelegateの方法ではありませんので、実行することはありません)

private func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { 
    // This method is your app’s first chance to execute code at launch time. 
    FIRApp.configure()   
    return true 
} 

FIRApp.configure(:Xcodeは私はAppDelegateでプライベートな方法であると、古い2.2の構文を変更することが示唆されました。だから、問題を解決する構文を修正するために戻す:

func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool { 
    print("Fire! willFinishLaunchingWithOptions") 
    return true 
} 

第二の問題を、以下のデモの構文を使用して、プロジェクトはサードパーティ製のプラグインまたはあなたのコード内でのObjective-Cを持っている場合、それは警告の原因となります"オブジェクトファイルの中にObjective-C ...の互換性がありません"。多分、swift 3.0の構文が古いので、この警告が表示される可能性があります。あなたはクラスの機能を使用している場合

class var applicationBuildNumber: String { 
    if let build = Bundle.main.infoDictionary?["CFBundleVersion"] as? String { 
     return build 
    } 
    return "Build Number Not Available" 
} 

、その後、この警告が表示されなくなります。

class func appLocalBuild() -> String { 
    return Bundle.main.object(forInfoDictionaryKey: kCFBundleVersionKey as String) as! String 
} 
関連する問題