如何消除这些与使用 SwiftUI 相关的常见 Firebase 警告?
How do I eliminate these common Firebase warnings related to using SwiftUI?
我在我的 SwiftUI/Combine 应用程序中使用 Firebase,我注意到几个警告,我想解决这些问题。他们没有破坏东西,但我想解决它们。我在使用 Xcode 12.4 和最新的 Swift 软件包依赖项时收到这些警告:GoogleUtilities 7.2.2 和 Firebase 7.7.0.
这是出现在控制台中的第一个警告:
[GoogleUtilities/AppDelegateSwizzler][I-SWZ001014] App Delegate does not conform to UIApplicationDelegate protocol.
作为参考,我是这样配置 Firebase 的:
import SwiftUI
import Firebase
@main
struct MyApp: App {
@StateObject var authState = AuthState()
init() {
FirebaseApp.configure()
}
var body: some Scene {
WindowGroup {
RootView()
.environmentObject(authState)
}
}
}
这是第二个警告,在我使用 .navigationBarTitle
修饰符设置导航栏标题后出现。
[LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(
"<NSLayoutConstraint:0x280c8cfa0 'BIB_Trailing_CB_Leading' H:[_UIModernBarButton:0x109219b60]-(6)-[_UIModernBarButton:0x109218760'Fullres'] (active)>",
"<NSLayoutConstraint:0x280c8cff0 'CB_Trailing_Trailing' _UIModernBarButton:0x109218760'Fullres'.trailing <= _UIButtonBarButton:0x109217100.trailing (active)>",
"<NSLayoutConstraint:0x280c8dd60 'UINav_static_button_horiz_position' _UIModernBarButton:0x109219b60.leading == UILayoutGuide:0x2816bcfc0'UIViewLayoutMarginsGuide'.leading (active)>",
"<NSLayoutConstraint:0x280c8ddb0 'UINavItemContentGuide-leading' H:[_UIButtonBarButton:0x109217100]-(0)-[UILayoutGuide:0x2816bcee0'UINavigationBarItemContentLayoutGuide'] (active)>",
"<NSLayoutConstraint:0x280c88f00 'UINavItemContentGuide-trailing' UILayoutGuide:0x2816bcee0'UINavigationBarItemContentLayoutGuide'.trailing == _UINavigationBarContentView:0x109214320.trailing (active)>",
"<NSLayoutConstraint:0x280c8e530 'UIView-Encapsulated-Layout-Width' _UINavigationBarContentView:0x109214320.width == 0 (active)>",
"<NSLayoutConstraint:0x280c892c0 'UIView-leftMargin-guide-constraint' H:|-(0)-[UILayoutGuide:0x2816bcfc0'UIViewLayoutMarginsGuide'](LTR) (active, names: '|':_UINavigationBarContentView:0x109214320 )>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x280c8cfa0 'BIB_Trailing_CB_Leading' H:[_UIModernBarButton:0x109219b60]-(6)-[_UIModernBarButton:0x109218760'Fullres'] (active)>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.
有没有人尝试解决这些警告?
第一条消息是由于 Firebase 试图找到 AppDelegate
,但由于您的应用程序遵循新的 SwiftUI 应用程序生命周期,因此它没有。
您可以像这样添加 AppDelegate
来消除此警告:
import SwiftUI
import Firebase
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
FirebaseApp.configure()
return true
}
}
@main
struct MyApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
@StateObject var authState = AuthState()
var body: some Scene {
WindowGroup {
RootView()
.environmentObject(authState)
}
}
}
有关详细信息,请参阅 my article on the topic。
附带说明一下,我们正在研究初始化 Firebase SDK 的其他方法(因为调配有其挑战)- 请参阅 this comment 类似的 GitHub 问题。
至于第二个警告,这与Firebase无关。如果您搜索 Whosebug,您会发现许多其他人也 运行 关注此问题。 看起来非常相似并且有一个您可能想尝试的公认答案。
我在我的 SwiftUI/Combine 应用程序中使用 Firebase,我注意到几个警告,我想解决这些问题。他们没有破坏东西,但我想解决它们。我在使用 Xcode 12.4 和最新的 Swift 软件包依赖项时收到这些警告:GoogleUtilities 7.2.2 和 Firebase 7.7.0.
这是出现在控制台中的第一个警告:
[GoogleUtilities/AppDelegateSwizzler][I-SWZ001014] App Delegate does not conform to UIApplicationDelegate protocol.
作为参考,我是这样配置 Firebase 的:
import SwiftUI
import Firebase
@main
struct MyApp: App {
@StateObject var authState = AuthState()
init() {
FirebaseApp.configure()
}
var body: some Scene {
WindowGroup {
RootView()
.environmentObject(authState)
}
}
}
这是第二个警告,在我使用 .navigationBarTitle
修饰符设置导航栏标题后出现。
[LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(
"<NSLayoutConstraint:0x280c8cfa0 'BIB_Trailing_CB_Leading' H:[_UIModernBarButton:0x109219b60]-(6)-[_UIModernBarButton:0x109218760'Fullres'] (active)>",
"<NSLayoutConstraint:0x280c8cff0 'CB_Trailing_Trailing' _UIModernBarButton:0x109218760'Fullres'.trailing <= _UIButtonBarButton:0x109217100.trailing (active)>",
"<NSLayoutConstraint:0x280c8dd60 'UINav_static_button_horiz_position' _UIModernBarButton:0x109219b60.leading == UILayoutGuide:0x2816bcfc0'UIViewLayoutMarginsGuide'.leading (active)>",
"<NSLayoutConstraint:0x280c8ddb0 'UINavItemContentGuide-leading' H:[_UIButtonBarButton:0x109217100]-(0)-[UILayoutGuide:0x2816bcee0'UINavigationBarItemContentLayoutGuide'] (active)>",
"<NSLayoutConstraint:0x280c88f00 'UINavItemContentGuide-trailing' UILayoutGuide:0x2816bcee0'UINavigationBarItemContentLayoutGuide'.trailing == _UINavigationBarContentView:0x109214320.trailing (active)>",
"<NSLayoutConstraint:0x280c8e530 'UIView-Encapsulated-Layout-Width' _UINavigationBarContentView:0x109214320.width == 0 (active)>",
"<NSLayoutConstraint:0x280c892c0 'UIView-leftMargin-guide-constraint' H:|-(0)-[UILayoutGuide:0x2816bcfc0'UIViewLayoutMarginsGuide'](LTR) (active, names: '|':_UINavigationBarContentView:0x109214320 )>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x280c8cfa0 'BIB_Trailing_CB_Leading' H:[_UIModernBarButton:0x109219b60]-(6)-[_UIModernBarButton:0x109218760'Fullres'] (active)>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.
有没有人尝试解决这些警告?
第一条消息是由于 Firebase 试图找到 AppDelegate
,但由于您的应用程序遵循新的 SwiftUI 应用程序生命周期,因此它没有。
您可以像这样添加 AppDelegate
来消除此警告:
import SwiftUI
import Firebase
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
FirebaseApp.configure()
return true
}
}
@main
struct MyApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
@StateObject var authState = AuthState()
var body: some Scene {
WindowGroup {
RootView()
.environmentObject(authState)
}
}
}
有关详细信息,请参阅 my article on the topic。
附带说明一下,我们正在研究初始化 Firebase SDK 的其他方法(因为调配有其挑战)- 请参阅 this comment 类似的 GitHub 问题。
至于第二个警告,这与Firebase无关。如果您搜索 Whosebug,您会发现许多其他人也 运行 关注此问题。