SwiftUI- 应用程序不符合协议 'App'

SwiftUI- App does not conform to protocol 'App'

我是编程初学者,刚刚添加了一个自定义标签栏以允许在整个应用程序中导航。但是,由于我已经添加了 属性 包装器来让这种情况发生,所以我得到了错误:

'app does not conform to protocol 'App' '.

它迫使我添加 init() 协议存根,但我似乎无法让它工作 - 所以我可以 运行 通过代码而不会出现错误 'Return from initializer without initializing all stored properties'。我已经尝试了所有方法,但它仍然不会消失。

我昨晚更新了 Xcode 如果相关的话,这个错误是在我今天开始处理我的项目时才出现的。

这是错误的来源

import SwiftUI
import Firebase

@main
struct PhotoApp: App {

    init () {
        FirebaseApp.configure()
    }

    @StateObject var viewRouter: ViewRouter
    
    var body: some Scene {
        WindowGroup {
            ContentView().environmentObject(viewRouter)
        }
    }
}

您需要初始化viewRouter。它给你一个错误的原因是 PhotoApp 不符合 App。这是因为在App协议的定义中,需要init

/// Creates an instance of the app using the body that you define for its
/// content.
///
/// Swift synthesizes a default initializer for structures that don't
/// provide one. You typically rely on the default initializer for
/// your app.
init()

如果您不提供 viewRouter 值,则会使用结构的成员初始化器。当我们只想要 init().

时,它将是 init(viewRouter: ViewRouter)

如果没有 init()viewRouter 设置默认值或直接这样做,您会收到错误消息“Return from initializer without initializing all stored properties”。

以下内容适合您:

import SwiftUI
import Firebase

@main
struct PhotoApp: App {

    init () {
        FirebaseApp.configure()
    }

    @StateObject var viewRouter: ViewRouter = ViewRouter()
    
    var body: some Scene {
        WindowGroup {
            ContentView().environmentObject(viewRouter)
        }
    }
}

注意:如果需要,请传入 ViewRouterinit 所需的任何内容。