Como faço para obter uma referência ao representante do app no ​​Swift?

Como faço para obter uma referência ao representante do app no ​​Swift?

Por fim, quero usar a referência para acessar o contexto do object gerenciado.

A outra solução está correta, pois você obterá uma referência ao delegado do aplicativo, mas isso não permitirá que você acesse quaisquer methods ou variables ​​adicionados por sua subclass de UIApplication, como o contexto do object gerenciado. Para resolver isso, simplesmente baixe para “AppDelegate” ou o que quer que sua subclass UIApplication seja chamada. Igual a:

Swift 3.x (introduzido com o Xcode 8)

let appDelegate = UIApplication.shared.delegate as! AppDelegate let aVariable = appDelegate.someVariable 

Swift 1.2 – 2.x (introduzido com o 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 

Em Swift, fácil de acessar em seu VC

 extension UIViewController { var appDelegate:AppDelegate { return UIApplication.sharedApplication().delegate as! AppDelegate } } 

É praticamente o mesmo que em Objective-C

 let del = UIApplication.sharedApplication().delegate 

Construtores de Conveniência

Adicionar na class AppDelegate no final do código

Swift 3 e 4

 func appDelegate () -> AppDelegate { return UIApplication.shared.delegate as! AppDelegate } 

Para usar a referência AppDelegate em sua class?


Chame o método AppDelegate

appDelegate (). setRoot ()

Isso poderia ser usado para o OS X

 let appDelegate = NSApplication.sharedApplication().delegate as AppDelegate var managedObjectContext = appDelegate.managedObjectContext? 

Aqui está a versão do Swift 2.0:

 let delegate = UIApplication.sharedApplication().delegate as? AppDelegate 

E para acessar o contexto do object gerenciado:

  if let delegate = UIApplication.sharedApplication().delegate as? AppDelegate { let moc = delegate.managedObjectContext // your code here } 

ou, usando guarda:

  guard let delegate = UIApplication.sharedApplication().delegate as? AppDelegate else { return } let moc = delegate.managedObjectContext // your code here 

SWIFT <3

Crie um método na class AppDelegate para ex

 func sharedInstance() -> AppDelegate{ return UIApplication.sharedApplication().delegate as! AppDelegate } 

e chamá-lo de algum outro lugar para ex

 let appDelegate : AppDelegate = AppDelegate().sharedInstance() 

SWIFT> = 3,0

 func sharedInstance() -> AppDelegate{ return UIApplication.shared.delegate as! AppDelegate } 

Appart do que é dito aqui, no meu caso eu perdi importação UIKit:

 import UIKit 

1) Certifique-se de import UIKit

2) let appDelegate = UIApplication.sharedApplication().delegate! as! AppDelegate let appDelegate = UIApplication.sharedApplication().delegate! as! AppDelegate

Tente simplesmente isso:

Swift 4

 // Call the method (UIApplication.shared.delegate as? AppDelegate)?.whateverWillOccur() 

onde no seu AppDelegate:

 // MARK: - Whatever func whateverWillOccur() { // Your code here. } 

No meu caso, eu estava faltando import UIKit na minha subclass NSManagedObject . Depois de importá-lo, eu poderia remover esse erro, pois o UIApplication é a parte do UIKit

Espero que ajude os outros !!!

Eu uso isso no Swift 2.3.

1. na class AppDelegate

 static let sharedInstance: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 

2.Call AppDelegate com

 let appDelegate = AppDelegate.sharedInstance 

Aqui está uma extensão para UIApplicationDelegate que evita codificar o nome da class 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 

É muito simples

Exemplo de delegado de aplicativo

 let app = UIApplication.shared.delegate as! AppDelegate 

você pode chamar um método com uma syntax de linha

 app.callingMethod() 

você pode acessar uma variável com este código

 app.yourVariable = "Assigning a value" 

No Swift 3.0 você pode obter a referência appdelegate

 let appDelegate = UIApplication.shared.delegate as! AppDelegate 

No XCode 6.2, isso também funciona

 let appDelegate = UIApplication.sharedApplication().delegate! as AppDelegate let aVariable = appDelegate.someVariable