[英]How can I initialise a global variable in a function for further use in 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"
}
}
当我尝试此方法时,我总是会得到一个相同的答案,即名称未初始化,因为它的末尾仍然具有全局inisialization名称= 0,但进一步向下,我将其初始化为文本字段中的int值,但它不会更新全局变量。 如果您可以给我一些代码来将名称初始化为全局变量,然后在其他函数中使用它,那就太好了。 感谢您的时间!
一个问题(不是唯一的问题,您稍后会发现)是:
var name = 0
@IBAction func Button(sender: UIButton) {
var name = text.text.toInt() // this is a DIFFERENT "name"
}
您在第二个变量中说了var
,这使该name
成为另一个 name
-函数内部的局部变量。 您声明了一个不同的变量,而不是使用全局变量。 用稍微更专业的术语来说,您已经重新声明了此变量,从而使全局变量黯然失色。
将您的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
更好?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.