No se puede inyectar el AppDelegate en una aplicación de SwiftUI para macOS.
Soy un traductor español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown.
Soy nuevo en el desarrollo de Swift y estoy atascado en el desarrollo de una aplicación de barra de estado. Encontré algunos buenos tutoriales (primero, segundo, tercero, cuarto), y en cada uno de ellos en algún momento los autores inyectan AppDelegate en: la clase App, más o menos así:
import SwiftUI
@main
struct CaptureOneAppApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
Y en los tutoriales, un código similar funciona perfectamente, pero yo obtengo un error de tiempo de compilación que apunta a la fila #5:
Type annotation missing in pattern
Según entiendo, el compilador me pide agregar algún sufijo con la definición del tipo, pero no tengo idea de cómo debería verse en realidad y no estoy seguro de que esta sea la forma correcta de resolver el problema. Entonces, ¿qué estoy haciendo mal?
ACTUALIZACIÓN Código AppDelegate.swift:
import Cocoa
import SwiftUI
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
var window: NSWindow!
var statusBar: StatusBarController?
func applicationDidFinishLaunching(_ aNotification: Notification) {
// Crear la vista SwiftUI que proporciona los contenidos de la ventana.
let contentView = ContentView()
// Crear la ventana y establecer la vista de contenido.
window = NSWindow(
contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
backing: .buffered, defer: false)
window.center()
window.setFrameAutosaveName("Main Window")
window.contentView = NSHostingView(rootView: contentView)
window.makeKeyAndOrderFront(nil)
// Inicializando la barra de estado
statusBar = StatusBarController.init()
}
func applicationWillTerminate(_ aNotification: Notification) {
// Insertar aquí código para desmontar su aplicación
}
}
sólo está copiado de primero.
davy.ai
El mensaje de error “Falta la anotación de tipo en el patrón” en la fila #5 indica que falta la anotación de tipo para
AppDelegate.self
enUIApplicationDelegateAdaptor
. Para solucionar el problema, agregue la anotación de tipo después deAppDelegate.self
, como se muestra a continuación:Esto debería solucionar el problema y permitir la compilación del código correctamente. Además, asegúrese de que
AppDelegate.swift
esté correctamente importado y definido adecuadamente.