the - swift wikipedia
¿Cómo obtengo una referencia al delegado de la aplicación en Swift? (16)
SWIFT <3
Crear un método en la clase AppDelegate para ex
func sharedInstance() -> AppDelegate{
return UIApplication.sharedApplication().delegate as! AppDelegate
}
y lo llaman en otro lugar por ex
let appDelegate : AppDelegate = AppDelegate().sharedInstance()
SWIFT> = 3.0
func sharedInstance() -> AppDelegate{
return UIApplication.shared.delegate as! AppDelegate
}
¿Cómo obtengo una referencia al delegado de la aplicación en Swift?
En última instancia, quiero usar la referencia para acceder al contexto del objeto gestionado.
Constructores de conveniencia
Agregar en la clase AppDelegate al final del código
Swift 3 y 4
func appDelegate () -> AppDelegate
{
return UIApplication.shared.delegate as! AppDelegate
}
¿Para usar la referencia AppDelegate en tu clase?
Método AppDelegate de llamada
appDelegate (). setRoot ()
1) Asegúrate de import UIKit
2) let appDelegate = UIApplication.sharedApplication().delegate! as! AppDelegate
let appDelegate = UIApplication.sharedApplication().delegate! as! AppDelegate
Aparte de lo que se dice aquí, en mi caso me perdí la importación de UIKit:
import UIKit
Aquí está la versión Swift 2.0:
let delegate = UIApplication.sharedApplication().delegate as? AppDelegate
Y para acceder al contexto de objeto gestionado:
if let delegate = UIApplication.sharedApplication().delegate as? AppDelegate {
let moc = delegate.managedObjectContext
// your code here
}
o, usando guardia:
guard let delegate = UIApplication.sharedApplication().delegate as? AppDelegate else {
return
}
let moc = delegate.managedObjectContext
// your code here
Aquí hay una extensión para UIApplicationDelegate
que evita codificar el nombre de la clase AppDelegate
:
extension UIApplicationDelegate {
static var shared: Self {
return UIApplication.shared.delegate! as! Self
}
}
// use like this:
let appDelegate = MyAppDelegate.shared // will be of type MyAppDelegate
En Swift 3.0 puede obtener la referencia de la aplicación por
let appDelegate = UIApplication.shared.delegate as! AppDelegate
En Swift, de fácil acceso en tus VC''s.
extension UIViewController {
var appDelegate:AppDelegate {
return UIApplication.sharedApplication().delegate as! AppDelegate
}
}
En el XCode 6.2, esto también funciona.
let appDelegate = UIApplication.sharedApplication().delegate! as AppDelegate
let aVariable = appDelegate.someVariable
En mi caso, faltaba import UIKit
en la parte superior de mi subclase NSManagedObject
. Después de importarlo, podría eliminar ese error ya que UIApplication
es la parte de UIKit
Espero que ayude a otros !!!
Es casi lo mismo que en Objective-C
let del = UIApplication.sharedApplication().delegate
Es muy simple
Instancia delegada de la aplicación
let app = UIApplication.shared.delegate as! AppDelegate
Puedes llamar a un método con una sintaxis de línea.
app.callingMethod()
Puedes acceder a una variable con este código.
app.yourVariable = "Assigning a value"
Esto podría ser usado para OS X
let appDelegate = NSApplication.sharedApplication().delegate as AppDelegate
var managedObjectContext = appDelegate.managedObjectContext?
Intenta simplemente esto:
Swift 4
// Call the method
(UIApplication.shared.delegate as? AppDelegate)?.whateverWillOccur()
donde en tu AppDelegate:
// MARK: - Whatever
func whateverWillOccur() {
// Your code here.
}
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 agregada por su subclase de aplicación UIA, como el contexto de objeto administrado. Para resolver esto, simplemente diríjase a "AppDelegate" o como sea que se llame a su subclase UIApplication. Al igual que:
Swift 3.x (introducido con Xcode 8)
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let aVariable = appDelegate.someVariable
Swift 1.2 - 2.x (introducido con Xcode 6.3)
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let aVariable = appDelegate.someVariable
Swift <1.2
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let aVariable = appDelegate.someVariable
Yo uso esto en Swift 2.3.
1. en la clase AppDelegate
static let sharedInstance: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
2. Llame a AppDelegate con
let appDelegate = AppDelegate.sharedInstance