设置变量的值不断变化

Value of setting variable keeps changing

我正在尝试创建一个多语言应用程序。有一个 UISegmented 控制栏,其中包含三种语言的 3 个段。我已经创建了将保存值的语言变量(英语 - 0,粤语 - 1,普通话 - 2)。我的问题是,在模拟器中,当我更改选定的段控件时,即使每个段都应将变量更改为特定变量,语言变量也会随机更改。

谁能告诉我我做错了什么?

class About: UIViewController {

var language: Int?
@IBOutlet weak var selectLanguage: UISegmentedControl!
@IBOutlet weak var whatIsiEd: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

}

func checkLanguage() -> Int? {
    return language
}

@IBAction func setLanguage(sender: AnyObject) {
    if self.selectLanguage.selectedSegmentIndex == 0 {
        println("Language is set to English - \(language) - \(self.selectLanguage.selectedSegmentIndex)")
        language = 0
    } else if self.selectLanguage.selectedSegmentIndex == 1 {
        println("Language is set to Traditional Chinese - \(language) - \(self.selectLanguage.selectedSegmentIndex)")
        language = 1
    } else if self.selectLanguage.selectedSegmentIndex == 2 {
        println("Language is set to Simplified Chinese - \(language) - \(self.selectLanguage.selectedSegmentIndex)")
        language = 2
    }
}
override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

当我默认使用模拟器时,段控制器设置为英语(段 0)。然后我更改为段 1,然后是 2,然后回到 1,最后是 0。日志报告如下:

语言设置为繁体中文 - 无 - 1
语言设置为简体中文 - 可选(1) - 2
语言设置为繁体中文 - 可选(2) - 1
语言设置为英语 - 可选 (1) - 0

从评论中发现。您只是在为 language 分配正确的值之前记录它。在这种情况下,如果你只是交换 language 的赋值和打印语句你应该是好的:

@IBAction func setLanguage(sender: AnyObject) {
    if self.selectLanguage.selectedSegmentIndex == 0 {
        // Assignment
        language = 0
        // Then print. Now your result will be correct.
        println("Language is set to English - \(language) - \(self.selectLanguage.selectedSegmentIndex)")
    } else if ...
}