在Swift中有没有一种方法可以检查字符串是否为 nil
和 ""
? 在Rails中,我可以使用 blank()
进行检查。
我目前有这个,但似乎过于复杂:
if stringA? != nil {
if !stringA!.isEmpty {
...blah blah
}
}
在Swift中有没有一种方法可以检查字符串是否为 nil
和 ""
? 在Rails中,我可以使用 blank()
进行检查。
我目前有这个,但似乎过于复杂:
if stringA? != nil {
if !stringA!.isEmpty {
...blah blah
}
}
当从 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
值以及空
字符串。
对我来说,它完美地运行了。
C++永存!
):
if stringA != nil ? stringA!.isEmpty == false : false { /* ... */ }
只有当stringA != nil
时才会进行stringA!
强制解包,因此是安全的。 == false
的冗长性在!(stringA!.isEmpty)
中已经很容易读懂了。if stringA == nil ? false : stringA!.isEmpty == false { /* ... */ }
在上面的语句中,很明显整个if
块在变量为nil
时不执行。在处理从本地数据库到服务器以及反之的值传递时,我遇到了太多的问号和感叹号等问题。
因此,我创建了一个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
}
这让我省去了在编写代码后添加和删除大量问号和感叹号的麻烦,因为代码已经足够清晰易懂。
你可以使用这个函数
class func stringIsNilOrEmpty(aString: String) -> Bool { return (aString).isEmpty }
nil
传递到这个函数中(除了在Objective-C中,在这种情况下它确实会崩溃)。 - Alfonso