Firebase, Swift: конфликтующий спецификатор nullability на типах возвращаемых значений, "nullable" конфликты с существующим спецификатором "nonnull",
Предупреждение в Firebase 3.6.0. Xcode 8 - Swift 3.
Это классы Firebase: -
-
@class FIROptions
-
@class FIRAuthCredential
-
@class FIRUserProfileChangeRequest
Предупреждающее сообщение:
- (nullable instancetype) init NS_UNAVAILABLE;
Понял, что это может быть ошибка!.
Но если нет, какие-либо идеи, как это исправить?
Ответы
Ответ 1
Исходный ответ. Эта проблема исправлена для меня как с последней Firebase (3.7.1). Просто сделайте "pod update Firebase", а затем очистите свой проект (очищайте папку с помощью клавиши Option, чтобы быть уверенным).
Обновленный ответ: Нет, мой плохой... проблема остается для меня тоже.
Копаем дальше, здесь есть хорошее объяснение: fooobar.com/questions/212066/...
Тем временем (так как я плохо себя чувствовал), я нашел хороший способ подавить предупреждение. Я должен был угадать тип предупреждения -Wnullability.; -)
Добавьте эти три строки #pragma вокруг строки нарушения в Pods/FirebaseCore/Frameworks/FirebaseCore.framework/Headers/FIRApp.h:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wnullability"
- (nullable instancetype)init NS_UNAVAILABLE;
#pragma clang diagnostic pop
Ура!
Ответ 2
Вот решение Build Settings → Code Signing Identity → изменить отладку и выпуск для iOS Developer.
Ответ 3
Ожидая, что команда Firebase решит эту ошибку, вы можете подумать об изменении Swift Optimization Level
в Build Settings
до None
.
Обратите внимание, что это временное решение. Верните его обратно в Fast, Whole Module Optimization
после того, как Firebase выпустит исправление.
Ответ 4
В моем случае я пошел в "Настройки сборки" → "Идентификация подписи кода" → изменить отладку и выпуск для iOS Developer.
Ответ 5
Перейдите на свои Pods → Настройки сборки → Используйте устаревшую версию языка Swift и выберите "Нет", это сработало для меня.
Очистите проект и выполните его.
Я смог воспроизвести предупреждения и исправить несколько раз.
Ответ 6
Очистка папок с данными и их очистка, по-видимому, заставили эти ошибки исчезнуть для меня. Если вы видите "STOP!! Will reset deviceID из памяти". а также включить совместное использование ключей в возможностях.
Ответ 7
он решается firebase 4.0.4, просто обязательно напишите "FirebaseApp.configure()" в функции didFinishLaunchingWithOptions в делегате приложения, вместо старого "FIRApp.configure()"
удача