Глобальная переменная в Appdelegate in swift

Я сохраняю некоторые данные в переменной appdelegate с viewcontroller и извлекаю их из другого контроллера view.Bowow - это код делегата приложения

class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var navigationController: UINavigationController?
var mainDic:NSMutableDictionary?

Код для установки mainDic

func filterResponse(response:NSDictionary){

    var appDelegate=AppDelegate()
    appDelegate.mainDic=response.mutableCopy() as? NSMutableDictionary
}

Код для выбора словаря.

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

Проблема в том, что я получаю вывод nil.Пожалуйста, сделайте меня правильно.

Ответ 1

Это ваша ошибка

var appDelegate=AppDelegate() //You create a new instance, not get the exist one

Вам нужно открыть доступ к AppDelegate

let appDelegate = UIApplication.shared.delegate as! AppDelegate

Ответ 2

Swift 4.0

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

Swift 3.0

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

Swift 2.0

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

Ответ 3

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