如何检查Swift中的未定义或空变量?
这里是我的代码:如何检查Swift中的未定义或空变量?
var goBack: String!
if (goBack == "yes")
{
firstName.text = passFirstName1
lastName.text = passLastName1
}
所有我想要做的就是执行if语句如果“GoBack的”是不确定的。我怎样才能做到这一点? (我不知道该把什么放在空白处)
整个程序比较复杂,这就是为什么我需要变量最初是未定义的。总之,我声明'goBack',要求用户输入他们的名字和姓氏,然后继续到下一个视图控制器。该视图控制器有一个后退按钮,将我们带回第一个视图控制器(我声明'goBack')。当按下后退按钮时,'goBack'字符串也会传递“yes”。我也把名字和姓氏传给了下一个视图控制器,但现在我想把它传回去。我能够将它传回,它只是让文本出现的问题。
编辑:firstName和lastName是标签,而passFirstName1和passLastName1是来自第二个视图控制器的变量。
“我想要做的就是执行if语句,如果'goBack'未定义,我该怎么做?
检查一个变量是否等于nil
可以使用雨燕的一个很酷的功能,称为如果,让言:
if let goBackConst = goBack {
firstName.text = passFirstName1
lastName.text = passLastName1
}
它本质上的“在逻辑上相当于我们能存储goBack
作为非可选常量,即我们可以“让”常量= goBack
?如果是,请执行以下操作。“
也就是说,假设我理解你的问题,@DomB ... – 2014-11-24 19:16:20
这真的很有趣,你可以定义一个变量作为可选的,这意味着它可能会或可能不会进行定义,考虑下列之情况:
要找出如果应用程序已经安装之前...
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")
}
然后,所有你需要做的是写一个函数来测试零...
func defined(str : String?) -> Bool {
return str != nil
}
而且你已经得到它。一个简单的例子可能是以下几点:
if let test : String? = defaults.stringForKey("key") != nil {
// test is defined
} else {
// test is undefined
}
末的感叹号是为展开可选的,而不是将变量定义为可选或不
“我想要做的就是执行if语句如果'goBack'未定义“
guard
声明(Swift 2中的新声明)允许这样做。如果goBack
为零,则else
块将运行并退出该方法。如果goBack
不是零,那么在守护语句后面可以使用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语句的正文中才可以使用在if语句中使用可选绑定创建的常量和变量。与之相反,在保护语句后面的代码行中可以使用保护语句 创建的常量和变量,如Early Exit中所述的 。
Swift中没有“undefined”这样的东西。但'goBack'是一个可选项。未赋值的'Optional'的值为'nil'。 – matt 2014-11-24 02:18:15
另外,不知道这是否有帮助,但你定义一个可选的“?”在排版结束时,“!”只是强制解包可选。所以:var things:String?是可选的 – newshorts 2015-08-07 03:24:58