Получение: тип Service_ValetApp не соответствует протоколу App в Xcode 12.5

Я получаю сообщение типа «Service_ValetApp», не соответствующее протоколу «Приложение», и я получаю исправление от компилятора: вы хотите добавить заглушки протокола? Хотя у меня уже есть init () в файле. Мне это кажется ошибкой. Если кто-то видел это раньше, я был бы признателен за любые идеи.

импортировать SwiftUI

@mainstruct Service_ValetApp: App {

      @Binding var isInitializing: Bool

init(isInitializing: Binding<Bool>) {
    
    
    self._isInitializing = isInitializing
    
}





var body: some Scene {
    WindowGroup {
        
        MotherView(isInitializing: self.$isInitializing).environmentObject(ViewRouter())
        
      
        
        
    }
}

}

1 ответ

Решение

Тип типа должен иметь инициализатор, который принимает нулевые аргументы:

      init() {
  //content here
}

У вас есть аргумент в вашем инициализаторе:

      init(isInitializing: Binding<Bool>) {

Система звонит init и не знал бы, что сойти за isInitializing.

Во-вторых, у вас есть App - @Binding используется с дочерними представлениями, но это самый верхний родительский компонент приложения.

Возможно, вы хотели использовать @State вместо этого со значением по умолчанию:

      @main struct Service_ValetApp: App {
    @State var isInitializing : Bool = true
    
    var body: some Scene {
        WindowGroup {
            MotherView(isInitializing: self.$isInitializing)
                .environmentObject(ViewRouter())
        }
    }
}
Другие вопросы по тегам