Firebase,Swift:与返回types冲突的可空性说明符,与现有说明符'nonnull'的'可空'冲突

Firebase 3.6.0中的警告。 Xcode 8 – Swift 3。

这些是Firebase课程:

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

警告信息:

  • (可空实例types)init NS_UNAVAILABLE;

想来可能是个bug!

但是,如果没有,如何解决它的任何想法?

原始答案 :这个问题对于我来说是最新的Firebase(3.7.1)。 只需做一个“pod更新Firebase”,然后清理您的项目(通过Option键清理生成文件夹,以确保)。

更新回答 :不,我的不好…问题依然存在。

进一步挖掘,这里有一个很好的解释: https : //stackoverflow.com/a/39233507/3638762

在此期间(因为我对你的希望感到不满),我find了一个很好的方法来压制这个警告。 我不得不猜测“无效性”警告types。 😉

在Pods / FirebaseCore / Frameworks / FirebaseCore.framework / Headers / FIRApp.h中的有问题的行周围添加这三条#pragma行:

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

干杯!

这里是解决scheme构build设置 – >代码签名身份 – >更改debugging和发布到iOS开发人员。

在等待Firebase团队解决此错误时,您可能会考虑将“ Build Settings Swift Optimization Level更改为“ None

请注意,这是一个临时的解决方法。 请在Firebase发布修复程序后将其切换回Fast, Whole Module Optimization

在我的情况下,我去build设设置 – >代码签名身份 – >更改debugging和发布到iOS开发人员。

去你的豆荚 – >生成设置 – >使用传统的Swift语言版本,并将其设置为否,这为我工作。

清理你的项目并build立。

我能够重现警告并多次修复。

清理派生的数据文件夹和清理似乎使这些错误消失了。 如果您看到“STOP !!将从内存中重置设备ID”。 以及在function中启用钥匙串共享。

它是由firebase 4.0.4解决的,只要确保在应用程序委托中的didFinishLaunchingWithOptions函数中写入“FirebaseApp.configure()”,而不是旧的“FIRApp.configure()”

祝你好运