Swift设置全局变量

时间:2016-08-11 20:55:44

标签: swift variables global

我无法通过不同的功能接收变量。

我已经分配了:

 var ageDescription: String = String()

作为全局变量在类之外,以及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)
}

我希望用户能够选择年龄选项,然后使用saveButton打印出结果。但似乎在saveButton被点击后,它打印出一个零。我相信它与变量ageDescription有关,但我不确定是什么问题。

3 个答案:

答案 0 :(得分:4)

您正在将值分配给函数内的新变量并尝试访问另一个函数中的全局变量,因此它对您来说是零。由于您已声明了一个全局变量,因此无需在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")
  }
}

答案 1 :(得分:2)

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

答案 2 :(得分:1)

除了使用全局变量之外,很容易变成代码味道,你在switch语句中实例化一个局部变量。这将在分配时与全局变量的范围重叠。这就是为什么全局变量永远不会改变的原因。只需删除' let'改为使用全局变量的关键字。