这是我的代码,但没有工作:
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
基本上,您分配给的变量与您预期的不同。