检查字符串是否为 nil 或空字符串。

166

在Swift中有没有一种方法可以检查字符串是否为 nil ""? 在Rails中,我可以使用 blank()进行检查。

我目前有这个,但似乎过于复杂:

    if stringA? != nil {
        if !stringA!.isEmpty {
            ...blah blah
        }
    }

1
@sutra和@imanou-petit的答案更好。 - Míng
24个回答

0

当从 UITextField 获取值并检查是否为 nil 或空字符串时非常有用

@IBOutlet weak var myTextField: UITextField!

这是您的函数(当您点击一个按钮时),它从UITextField获取字符串并执行其他操作。
@IBAction func getStringFrom_myTextField(_ sender: Any) {

guard let string = myTextField.text, !(myTextField.text?.isEmpty)!  else { return }
    //use "string" to do your stuff.
}

这将处理nil值以及字符串。

对我来说,它完美地运行了。


0
使用三元运算符(也称为条件运算符,C++永存!): if stringA != nil ? stringA!.isEmpty == false : false { /* ... */ } 只有当stringA != nil时才会进行stringA!强制解包,因此是安全的。 == false的冗长性在!(stringA!.isEmpty)中已经很容易读懂了。
我个人更喜欢稍微不同的形式: if stringA == nil ? false : stringA!.isEmpty == false { /* ... */ } 在上面的语句中,很明显整个if块在变量为nil时不执行。

0

在处理从本地数据库到服务器以及反之的值传递时,我遇到了太多的问号和感叹号等问题。

因此,我创建了一个Swift3.0实用程序来处理空值情况,几乎可以完全避免在代码中使用问号和感叹号。

func str(_ string: String?) -> String {
    return (string != nil ? string! : "")
}

例:

原文:

    let myDictionary: [String: String] = 
                      ["title": (dbObject?.title != nil ? dbObject?.title! : "")]

之后:

    let myDictionary: [String: String] = 
                        ["title": str(dbObject.title)]

当需要检查有效字符串时,

    if !str(dbObject.title).isEmpty {
        //do stuff
    }

这让我省去了在编写代码后添加和删除大量问号和感叹号的麻烦,因为代码已经足够清晰易懂。


-4

你可以使用这个函数

 class func stringIsNilOrEmpty(aString: String) -> Bool { return (aString).isEmpty }

2
不是Swift用户,您能解释一下为什么如果传递nil,它不会抛出异常吗? - Foon
它不会抛出异常,因为你根本无法将nil传递到这个函数中(除了在Objective-C中,在这种情况下它确实会崩溃)。 - Alfonso
这并没有回答问题。它没有检查 nil,因为它不接受可选项。 - Wayne Ellery

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接