@IBAction 函数中未解决的标识符错误
Unresolved Identifier error within @IBAction func
我正在编写一个基本的 iOS 应用程序来测试我的 Swift 知识并继续练习。在我的应用程序中,用户输入婴儿的名字,然后打开或关闭开关以设置 gender/sex 并更改系统颜色。
之后,这个名字用来填充一个UITextView,取名为"firstWords",在下面的代码块中:
// Save name entered into text field
@IBAction func saveSettings(_ sender: UIButton) {
nameLabel.text = nameTextField.text
if nameTextField.text == "" {
showMessage()
nameLabel.text = "Baby Name"
}
nameTextField.resignFirstResponder()
let nameHolder: String! = nameLabel.text
if boyGirlSwitch.isOn {
let sex = ("boy", "his", "he", "Boy", "His", "He")
} else {
let sex = ("girl", "her", "she", "Girl", "Her", "She")
}
firstWords.text = "Wow, " + nameHolder + " has so much to look forward to!" + (sex.5) + " will do so many great things!"
}
我一直在 firstWords
内的元组 (sex.5)
处收到错误消息:“Use of unresolved identifier 'sex'
”
据我所知,常量 sex
在 if
语句中声明,并且编译器确实以任何一种方式通过它,因此它确实得到识别和声明。
问题:为什么我会收到错误消息?
提前致谢!这也是我的代码的屏幕截图:
Screenshot of block of code as described above, including the compiler/build-error
这是范围问题。 sex
仅在 else
子句中可用。
你可以这样修复
// Save name entered into text field
@IBAction func saveSettings(_ sender: UIButton) {
nameLabel.text = nameTextField.text
if nameTextField.text == "" {
showMessage()
nameLabel.text = "Baby Name"
}
nameTextField.resignFirstResponder()
let nameHolder: String! = nameLabel.text
var sex : (String, String, String, String, String, String)
if boyGirlSwitch.isOn {
sex = ("boy", "his", "he", "Boy", "His", "He")
} else {
sex = ("girl", "her", "she", "Girl", "Her", "She")
}
firstWords.text = "Wow, " + nameHolder + " has so much to look forward to!" + (sex.5) + " will do so many great things!"
}
这样sex
定义在整个IBAction
范围内,最终会可用
如果您使用默认值预先声明一个条件,您也可以跳过它:
// Save name entered into text field
@IBAction func saveSettings(_ sender: UIButton) {
nameLabel.text = nameTextField.text
if nameTextField.text == "" {
showMessage()
nameLabel.text = "Baby Name"
}
nameTextField.resignFirstResponder()
let nameHolder: String! = nameLabel.text
var sex = ("girl", "her", "she", "Girl", "Her", "She")
if boyGirlSwitch.isOn {
sex = ("boy", "his", "he", "Boy", "His", "He")
}
firstWords.text = "Wow, " + nameHolder + " has so much to look forward to!" + (sex.5) + " will do so many great things!"
}
维基百科上实际上有一篇关于变量范围的好文章:https://en.wikipedia.org/wiki/Scope_(computer_science)
我正在编写一个基本的 iOS 应用程序来测试我的 Swift 知识并继续练习。在我的应用程序中,用户输入婴儿的名字,然后打开或关闭开关以设置 gender/sex 并更改系统颜色。 之后,这个名字用来填充一个UITextView,取名为"firstWords",在下面的代码块中:
// Save name entered into text field
@IBAction func saveSettings(_ sender: UIButton) {
nameLabel.text = nameTextField.text
if nameTextField.text == "" {
showMessage()
nameLabel.text = "Baby Name"
}
nameTextField.resignFirstResponder()
let nameHolder: String! = nameLabel.text
if boyGirlSwitch.isOn {
let sex = ("boy", "his", "he", "Boy", "His", "He")
} else {
let sex = ("girl", "her", "she", "Girl", "Her", "She")
}
firstWords.text = "Wow, " + nameHolder + " has so much to look forward to!" + (sex.5) + " will do so many great things!"
}
我一直在 firstWords
内的元组 (sex.5)
处收到错误消息:“Use of unresolved identifier 'sex'
”
据我所知,常量 sex
在 if
语句中声明,并且编译器确实以任何一种方式通过它,因此它确实得到识别和声明。
问题:为什么我会收到错误消息?
提前致谢!这也是我的代码的屏幕截图: Screenshot of block of code as described above, including the compiler/build-error
这是范围问题。 sex
仅在 else
子句中可用。
你可以这样修复
// Save name entered into text field
@IBAction func saveSettings(_ sender: UIButton) {
nameLabel.text = nameTextField.text
if nameTextField.text == "" {
showMessage()
nameLabel.text = "Baby Name"
}
nameTextField.resignFirstResponder()
let nameHolder: String! = nameLabel.text
var sex : (String, String, String, String, String, String)
if boyGirlSwitch.isOn {
sex = ("boy", "his", "he", "Boy", "His", "He")
} else {
sex = ("girl", "her", "she", "Girl", "Her", "She")
}
firstWords.text = "Wow, " + nameHolder + " has so much to look forward to!" + (sex.5) + " will do so many great things!"
}
这样sex
定义在整个IBAction
范围内,最终会可用
如果您使用默认值预先声明一个条件,您也可以跳过它:
// Save name entered into text field
@IBAction func saveSettings(_ sender: UIButton) {
nameLabel.text = nameTextField.text
if nameTextField.text == "" {
showMessage()
nameLabel.text = "Baby Name"
}
nameTextField.resignFirstResponder()
let nameHolder: String! = nameLabel.text
var sex = ("girl", "her", "she", "Girl", "Her", "She")
if boyGirlSwitch.isOn {
sex = ("boy", "his", "he", "Boy", "His", "He")
}
firstWords.text = "Wow, " + nameHolder + " has so much to look forward to!" + (sex.5) + " will do so many great things!"
}
维基百科上实际上有一篇关于变量范围的好文章:https://en.wikipedia.org/wiki/Scope_(computer_science)