SwiftUI: Отсутствует параметр в call -StateObject

#swift #swiftui

Вопрос:

Я пытаюсь получить доступ к классу в своем представлении настроек

 struct SettingsView: View {  @StateObject var stat = StatusBarController()   .....}    

Но я получаю ошибку из-за отсутствующего параметра в StatusBarController()

Отсутствует аргумент для параметра #1 в вызове

Вставьте ‘lt;#NSPopover#gt;’

Класс контроллера управления статусом

 class StatusBarController: ObservableObject {  private var statusBar: NSStatusBar  private var popover: NSPopover  private var eventMonitor: EventMonitor?  private var content: ContentView?      init(_ popover: NSPopover)  {  self.popover = popover  statusBar = NSStatusBar.init()      if let statusBarButton = statusItem.button {  ........  }    eventMonitor = EventMonitor(mask: [.leftMouseDown, .rightMouseDown], handler: mouseEventHandler)  }  .......}  

Ответ №1:

Если вы хотите использовать конструктор по умолчанию для StateObject инициализации , укажите всплывающее окно по умолчанию в контроллере init , например

 class StatusBarController: ObservableObject {  private var statusBar: NSStatusBar  private var popover: NSPopover  private var eventMonitor: EventMonitor?  private var content: ContentView?      init(_ popover: NSPopover = NSPopover()) // lt;lt; here !!  { ...  

альтернативный вариант-сделать его необязательным (и соответственно обновить каждую зависимость).