这是我的代码:
var goBack: String!
if (goBack == "yes")
{
firstName.text = passFirstName1
lastName.text = passLastName1
}
如果'goBack'未定义,我想要做的就是执行if语句。我怎样才能做到这一点? (我不知道该把什么放在空白处)
整个程序更复杂,这就是我首先需要变量未定义的原因。简而言之,我声明'goBack',要求用户输入他们的名字和姓氏,然后继续下一个视图控制器。该视图控制器有一个后退按钮,将我们带回第一个视图控制器(我声明'goBack')。按下后退按钮时,“goBack”字符串也会传递“是”。我还将名字和姓氏传递给下一个视图控制器,但现在我想将它传回去。我能够把它传回来,这只是让文字出现的问题。
编辑:firstName和lastName是标签,而passFirstName1和passLastName1是来自第二个视图控制器的变量。
答案 0 :(得分:5)
"我想要做的就是执行if语句,如果' goBack'未定义。我怎么能这样做?"
要检查变量是否等于nil
,您可以使用Swift非常酷的功能,称为 if-let语句:
if let goBackConst = goBack {
firstName.text = passFirstName1
lastName.text = passLastName1
}
它基本上是&#34的逻辑等价物;我们可以将goBack
存储为非可选常数,即我们可以"让"常数= goBack
?如果是,请执行以下操作。"
答案 1 :(得分:1)
非常有趣,您可以将变量定义为可选,这意味着可以定义或不定义,请考虑以下场景:
你想知道该应用程序是否已经安装......
let defaults = NSUserDefaults()
let testInstalled : String? = defaults.stringForKey("hasApplicationLaunchedBefore")
if defined(testInstalled) {
NSLog("app installed already")
NSLog("testAlreadyInstalled: \(testInstalled)")
defaults.removeObjectForKey("hasApplicationLaunchedBefore")
} else {
NSLog("no app")
defaults.setValue("true", forKey: "hasApplicationLaunchedBefore")
}
然后您需要做的就是编写一个函数来测试nil ...
func defined(str : String?) -> Bool {
return str != nil
}
而且你已经得到了它。一个更简单的例子可能如下:
if let test : String? = defaults.stringForKey("key") != nil {
// test is defined
} else {
// test is undefined
}
最后的感叹号用于展开可选项,而不是将变量定义为可选项
答案 2 :(得分:1)
“如果'goBack'未定义,我想要做的就是执行if语句”
guard
语句(Swift 2中的新语句)允许这一点。如果goBack
为nil,则运行else
块并退出该方法。如果goBack
不是nil,则可以在guard语句后使用localGoBack
。
var goBack:String?
func methodUsingGuard() {
guard let localGoBack = goBack else {
print("goBack is nil")
return
}
print("goBack has a value of \(localGoBack)")
}
methodUsingGuard()
来自Swift编程语言(Swift 3.1):
使用if中的可选绑定创建的常量和变量 声明仅在if语句的正文中可用。在 对比,使用guard语句创建的常量和变量 可以在遵循guard语句的代码行中获得 在Early Exit中描述。