es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for 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 en UIApplicationDelegateAdaptor. Para solucionar el problema, agregue la anotación de tipo después de AppDelegate.self, como se muestra a continuación:

    @main
    struct CaptureOneAppApp: App {
        @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate: AppDelegate
    
        var body: some Scene {
            WindowGroup {
                ContentView()
            }
        }
    }
    

    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.

Comments are closed.