如何初始化函数中的全局变量以便在Swift中进一步使用?

时间:2015-04-18 00:17:17

标签: ios swift

提前感谢您的帮助。我刚刚开始使用swift,我正在使用Xcode来尝试构建一个相当简单的应用程序。

class ViewController: UIViewController {


    @IBOutlet var text: UITextField!
    @IBOutlet var Lable: UILabel!
    @IBOutlet var Button: UIButton!

    @IBOutlet var message1: UITextField!
    @IBOutlet var Button2: UIButton!

    var name = 0

    @IBAction func Button(sender: UIButton) {
         var name = text.text.toInt()
    }


    @IBAction func Button2(sender: UIButton) {

        var code = Array (message1.text).map{String($0).toInt()! }



        for var n = 0 ; n < code.count; n++
        {
            code[n] = code[n] + name
        }

        var StringArray = (code : String())

        if name != 0
        {
        message1.text = "name variable is inisialised"
        }

        else
        {
            message1.text = "Error name is not initialised"
        }

    }

当我尝试这个时,我总是得到相同的答案,Name没有被初始化,因为它仍然具有全局inisialisation Name = 0在结尾但是进一步向下我将它初始化为文本字段中的int值但它没有' t更新全局变量。如果您可以给我一些代码来使用初始化名称作为全局变量并在其他函数中使用它那将是很好的。感谢您的时间!

2 个答案:

答案 0 :(得分:0)

一个问题(不是唯一的问题,正如你后来发现的那样)是:

var name = 0

@IBAction func Button(sender: UIButton) {
     var name = text.text.toInt() // this is a DIFFERENT "name"
}

你在第二个中说var,这使name不同 name - 函数内的局部变量。您没有使用全局变量,而是声明了另一个变量。从稍微更技术的角度来说,你重新宣布了这个变量,使全球变得黯然失色。

答案 1 :(得分:0)

Button()功能更改为:

@IBAction func Button(sender: UIButton) {
  // Handle the case where toInt() fails, by returning nil/.None
  // For example, shown below, set name to `0`
  name = text.text.toInt() ?? 0
}

name在分配号码时使用的名称也特别糟糕。也许name_index更好?