Xcode swift: 全局变量为空

Xcode swift: global variable is empty

我的代码无效:

AppDelegate.swift

import UIKit

var systemLanguage = ""

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

        // Systemsprache erkennen
        let systemLanguage = NSLocale.preferredLanguages()[0] as! String
        println("Device system language: \(systemLanguage)")

        return true
    }

settingsTableViewController.swift

override func viewDidLoad() {
        super.viewDidLoad()

        self.navigationController!.navigationBar.barStyle = UIBarStyle.Black
        self.navigationController!.navigationBar.tintColor = UIColor.whiteColor()

        if systemLanguage == "de" {

            self.title = "Einstellungen"

        } else {

            self.title = "Settings"

        }
        println("Device system language: \(systemLanguage)")

        self.tableView.backgroundColor = UIColor.darkGrayColor()

    }

当应用程序启动时,控制台显示:设备系统语言:de

但是当我将视图更改为 settingsTableViewController 时,变量 systemLanguage 为空。控制台显示:设备系统语言:

为什么会这样?

为什么?因为范围。您将局部变量命名为与实例变量相同。在您的应用委托中:

// Systemsprache erkennen
let systemLanguage = NSLocale.preferredLanguages()[0] as! String
println("Device system language: \(systemLanguage)")

return true

systemLanguage 在执行离开该函数时被释放。如果你把它改成这样它会起作用:

// Systemsprache erkennen
systemLanguage = NSLocale.preferredLanguages()[0] as! String
println("Device system language: \(systemLanguage)")

return true

基本上,您分配给了一个与预期不同的变量。