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)
}
}
}
注意:如果需要,请传入 ViewRouter
的 init
所需的任何内容。
我是编程初学者,刚刚添加了一个自定义标签栏以允许在整个应用程序中导航。但是,由于我已经添加了 属性 包装器来让这种情况发生,所以我得到了错误:
'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)
}
}
}
注意:如果需要,请传入 ViewRouter
的 init
所需的任何内容。