如何在Swift中检查undefined或null变量?

时间:2014-11-24 02:04:31

标签: ios variables swift xcode6

这是我的代码:

var goBack: String!

if (goBack == "yes")
    {
        firstName.text = passFirstName1
        lastName.text = passLastName1
    }

如果'goBack'未定义,我想要做的就是执行if语句。我怎样才能做到这一点? (我不知道该把什么放在空白处)

整个程序更复杂,这就是我首先需要变量未定义的原因。简而言之,我声明'goBack',要求用户输入他们的名字和姓氏,然后继续下一个视图控制器。该视图控制器有一个后退按钮,将我们带回第一个视图控制器(我声明'goBack')。按下后退按钮时,“goBack”字符串也会传递“是”。我还将名字和姓氏传递给下一个视图控制器,但现在我想将它传回去。我能够把它传回来,这只是让文字出现的问题。

编辑:firstName和lastName是标签,而passFirstName1和passLastName1是来自第二个视图控制器的变量。

3 个答案:

答案 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中描述。