这是我的代码不起作用:
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为空。控制台说:设备系统语言:
为什么会这样?
答案 0 :(得分:1)
为什么呢?因为范围。您将局部变量命名为与实例变量相同。在您的app delegate中:
// 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
基本上,您分配的变量与您期望的变量不同。