Firebase,Swift:在返回类型上存在冲突的可空性说明符,可以使用' nullable'与现有说明者的冲突' nonnull'

时间:2016-09-19 01:23:05

标签: ios swift firebase swift3 xcode8

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

这些是Firebase类: -

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

警告信息:

  
      
  • (可空实例类型)init NS_UNAVAILABLE;
  •   

想想它可能是一个错误!

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

7 个答案:

答案 0 :(得分:10)

原始回答:从最新的Firebase(3.7.1)开始,此问题已解决。只需做一个" pod更新Firebase"然后清理您的项目(通过Option键清除构建文件夹以确保)。

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

进一步深入研究,这里有一个很好的解释:https://stackoverflow.com/a/39233507/3638762

与此同时(因为我对你的希望感到沮丧)我找到了一个很好的方法来抑制警告。我不得不猜测-Wnullability警告类型。 ; - )

在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

干杯!

答案 1 :(得分:2)

以下是解决方案Build Settings - >代码签名身份 - >将调试和发布更改为iOS Developer。

答案 2 :(得分:1)

在等待Firebase小组解决此错误的同时,您可以考虑将Swift Optimization Level中的Build Settings更改为None

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

答案 3 :(得分:1)

就我而言,我去了Build Settings - >代码签名身份 - >将调试和发布更改为iOS Developer。

答案 4 :(得分:1)

转到你的Pods - >构建设置 - >使用Legacy Swift语言版本并将其设置为No,这对我有用。

清理项目并构建。

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

答案 5 :(得分:0)

它由firebase 4.0.4解决,只需确保在app delegate中的didFinishLaunchingWithOptions函数中编写“FirebaseApp.configure()”,而不是旧的“FIRApp.configure()”

祝你好运

答案 6 :(得分:-1)

清除派生数据文件夹并清理似乎会让这些错误消失。如果你看到"停!!将从内存重置deviceID。"同时,启用功能中的钥匙串共享。