¿Cómo obtengo una referencia a AppDelegate en Swift?
¿Cómo obtengo una referencia a AppDelegate en Swift?
En última instancia, quiero utilizar la referencia para acceder al contexto del objeto administrado.
La otra solución es correcta porque le proporcionará una referencia al delegado de la aplicación, pero esto no le permitirá acceder a ningún método o variable agregado por su subclase de UIApplication, como su contexto de objeto administrado. Para resolver esto, simplemente baje a "AppDelegate" o como se llame su subclase UIApplication. En Swift 3, 4 y 5 , esto se hace de la siguiente manera:
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let aVariable = appDelegate.someVariable
Rápido 4.2
En Swift, fácil acceso en sus VC
extension UIViewController {
var appDelegate: AppDelegate {
return UIApplication.shared.delegate as! AppDelegate
}
}
Constructores de conveniencia
Agregue la clase AppDelegate al final del código
Rápido 5.7
func appDelegate() -> AppDelegate {
guard let delegate = UIApplication.shared.delegate as? AppDelegate else {
fatalError("could not get app delegate ")
}
return delegate
}
¿Usar la referencia de AppDelegate en cualquier parte del código?
Por ejemplo: llamar al método AppDelegate denominado setRoot
appDelegate().setRoot()
Ejemplo de delegado de escena:
func sceneDelegate() -> SceneDelegate {
guard let sceneDelegate = UIApplication.shared.connectedScenes.first?.delegate as? SceneDelegate else {
fatalError("could not get scene delegate ")
}
return sceneDelegate
}
Esto podría usarse para OS X
let appDelegate = NSApplication.sharedApplication().delegate as AppDelegate
var managedObjectContext = appDelegate.managedObjectContext?
Es más o menos lo mismo que en Objective-C.
let del = UIApplication.sharedApplication().delegate