Swift3 @IBAction func内的未解析标识符错误
我正在编写一个基本的iOS应用程序来测试我的Swift知识并继续练习。在我的应用程序中,用户键入婴儿的名字,然后打开或关闭开关来设置性别/性别,并更改系统颜色。 之后,该名称用于在以下代码块中填充名为“firstWords”的UITextView:Swift3 @IBAction func内的未解析标识符错误,swift3,xcode8,ios10.3,Swift3,Xcode8,Ios10.3,我正在编写一个基本的iOS应用程序来测试我的Swift知识并继续练习。在我的应用程序中,用户键入婴儿的名字,然后打开或关闭开关来设置性别/性别,并更改系统颜色。 之后,该名称用于在以下代码块中填充名为“firstWords”的UITextView: // Save name entered into text field @IBAction func saveSettings(_ sender: UIButton) { nameLabel.text = nameTextField.tex
// 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!"
}
我一直在元组(sex.5)
中发现一个错误,上面写着:“使用未解析的标识符‘sex’
”
据我所知,常量sex
是在if
语句中声明的,编译器会以任何一种方式对其进行处理,因此它会被识别和声明。
问题:我为什么会出错
提前谢谢!下面是我的代码截图:
这是一个范围问题
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!"
}
这种方式在整个iAction
的范围内定义了sex
,最终将可用
如果使用默认值预先声明一个条件,也可以跳过该条件:
// 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!"
}
实际上,维基百科上有一篇关于变量作用域的好文章:这是一个作用域问题
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!"
}
这种方式在整个iAction
的范围内定义了sex
,最终将可用
如果使用默认值预先声明一个条件,也可以跳过该条件:
// 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!"
}
实际上,维基百科上有一篇关于变量作用域的好文章:谢谢你的快速回答,塞巴斯蒂安,但在我的情况下它不起作用。。。在
if
语句中,我现在得到了一个错误:“无法将String、String、String…赋值给String的值…但是我尝试了其他一些似乎很好的方法-在if
之前声明变量,然后在那里赋值。它稍后会被更改,然后使用(sex.5)
callinfirstWords
100%有效。无论如何,感谢您的支持help@Junsan修正了我用正确类型声明varialbe的答案。不过,我建议使用第二个版本。一般来说,这是处理这种情况的一种非常容易出错的方法。我强烈建议您在这种情况下使用已定义的结构:)是的,我希望改进随着我的进一步学习,我的编码。感谢您的建议感谢您的快速回答,Sebastian,但它在我的情况下不起作用…在if
语句中,我现在收到错误:“无法分配字符串,字符串,字符串…”。。。到字符串的值。。。但是我尝试了其他一些似乎效果不错的方法——在if
之前声明变量,然后在那里赋值。它会在以后被更改,然后使用(sex.5)
调用内部第一个单词
100%有效。无论如何,谢谢你的帮助help@Junsan修正了我用正确类型声明varialbe的答案。但是我会推荐第二个版本。一般来说,这是一种非常容易出错的处理这种情况的方法。我强烈建议您在这种情况下使用已定义的结构:)是的,我希望在进一步学习时改进我的编码。谢谢你的建议