Xcode swift:全局变量为空



这是我的代码,但没有工作:

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
    }

设置TableViewController.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

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

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

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

相关内容

  • 没有找到相关文章

最新更新