web-dev-qa-db-ja.com

Firebase、Swift:戻り値の型でnull可能指定子が競合しています。「null可能」は既存の指定子「nonnull」と競合しています

警告はFirebase 3.6.にあります。 Xcode 8-Swift 3。

これらはFirebaseクラスです:-

  • @class FIROptions
  • @class FIRAuthCredential
  • @class FIRUserProfileChangeRequest

警告メッセージ:

  • (nullable instancetype)init NS_UNAVAILABLE;

それはバグかもしれないと考えました!。

しかし、そうでなければ、それを修正する方法のアイデアはありますか?

20
Dravidian

元の回答:この問題は、最新のFirebase(3.7.1)で修正されています。 「ポッドアップデートFirebase」を実行し、プロジェクトをクリーンアップします(念のため、オプションキーでビルドフォルダーをクリーンアップします)。

更新された回答:いいえ、私の悪い...問題は私にも残っています。

さらに掘り下げて、ここに良い説明があります: https://stackoverflow.com/a/39233507/3638762

その間(私はあなたの望みをかなえるのが気分が悪かったので)警告を抑制する素晴らしい方法を見つけました。 -Wnullability警告タイプを推測する必要がありました。 ;-)

Pods/FirebaseCore/Frameworks/FirebaseCore.framework/Headers/FIRApp.hの問題のある行の周りに次の3つの#pragma行を追加します。

#pragma clang diagnostic Push
#pragma clang diagnostic ignored "-Wnullability"
- (nullable instancetype)init NS_UNAVAILABLE;
#pragma clang diagnostic pop

乾杯!

10
warby

これがソリューションのビルド設定->コード署名ID->デバッグを変更してiOS開発者にリリースする方法です。

ポッド->ビルド設定->レガシーを使用Swift言語バージョンに移動し、それを[いいえ]に設定します。これでうまくいきました。

プロジェクトをクリーンアップしてビルドします。

警告を再現し、何度も修正することができました。

1

私の場合、ビルド設定->コード署名ID->デバッグを変更して、iOS Developerにリリースしました。

1
Amir Nabaei

Firebaseチームがこのバグを解決するのを待つ間、Swift Optimization LevelBuild SettingsNoneに変更することを検討してください。

これは一時的な回避策であることに注意してください。 Firebaseが修正をリリースした後、Fast, Whole Module Optimizationに戻してください。

1
Ken Tan

これは、firebase 4.0.4で解決されました。古い「FIRApp.configure()」ではなく、アプリデリゲートのdidFinishLaunchingWithOptions関数に「FirebaseApp.configure()」と書き込んでください。

幸運を

0
Michsedki