Swift 设置全局变量

Swift Setting up a global variable

我无法通过不同的函数接收变量。

我已分配:

 var ageDescription: String = String()

在 class 之外作为全局变量,以及 2 个 ibactions

@IBAction func ageChanged(sender: UISegmentedControl) {
    switch age.selectedSegmentIndex {
    case 0:
        print("Under 18")

        let ageDescription = "under 18"
    case 1:
        print("Over 18")

        let ageDescription = "over 18"
    case 2:
        print("Strictly over 21")
        let ageDescription = "strictly over 21"
    default:
        print("IDK")
    }


}



@IBAction func saveButtonTapped(sender: UIButton) {
    print(ageDescription)
}

我希望用户能够select选择一个年龄段,并使用保存按钮打印出结果。但似乎在点击 saveButton 之后,它打印出一个零。我相信它与变量 ageDescription 有关,但我不确定哪里出了问题。

删除 switch 语句中的 let。您正在重新创建 ageDescription 变量。

您正在将值赋给一个函数内的新变量并试图访问另一个函数中的全局变量,因此它对您来说是 nil。既然声明了一个全局变量,就不需要在ageChanged函数中再声明一个局部变量,直接访问全局变量即可。

试试这个:

@IBAction func ageChanged(sender: UISegmentedControl) {
    switch age.selectedSegmentIndex {
    case 0:
        print("Under 18")

        ageDescription = "under 18"
    case 1:
        print("Over 18")

        ageDescription = "over 18"
    case 2:
        print("Strictly over 21")
        ageDescription = "strictly over 21"
    default:
        print("IDK")
  }
}

除了使用全局变量很容易成为一种代码味道之外,您还在 switch 语句中实例化了一个局部变量。这将在赋值时覆盖全局变量的范围。这就是为什么全局变量永远不会改变的原因。只需删除 'let' 关键字即可改用全局变量。