2016-02-12 2 views
2

Я пытаюсь использовать статические ВАР на AppDelegate на Swift, так что я могу установить/получить значения для всех viewControllersСтатическая вар на Swift

AppDelegate.swift

class AppDelegate: UIResponder, UIApplicationDelegate { 
struct Static { 
     static var userId: String? 
    } 

Получение:

var userGuid: String = AppDelegate.Static.userId! 

Окружение:

AppDelegate.Static.userId = "123456" 

Однако как-то мой статический вар всегда пропускает ноль

Что может быть? Thx

+0

Вы уверены, что код, чтобы установить идентификатор пользователя в настоящее время выполняется до того, как ID будет доступен? Где это происходит? –

ответ

2

Было бы немного ясно, чтобы вместо этого был выделен класс для вашей пользовательской информации о сеансе?

Пример (предполагается, что Swift 2,0 используется)

class SessionInfo { 
    var userId:String? 
    static let sharedInstance = SessionInfo() 
} 

Тогда

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 

    SessionInfo.sharedInstance.userId = "foobar" 
    return true 
} 

А в другой точке зрения

@IBOutlet weak var labelTop: UILabel! 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
     labelTop.text = SessionInfo.sharedInstance.userId 
    } 
Смежные вопросы