isEqualToString在swift中?
我试图运行下面的代码:
import UIKit class LoginViewController: UIViewController { @IBOutlet var username : UITextField = UITextField() @IBOutlet var password : UITextField = UITextField() @IBAction func loginButton(sender : AnyObject) { if username .isEqual("") || password.isEqual("")) { println("Sign in failed. Empty character") } }
我以前的代码是在客观的C工作正常:
if([[self.username text] isEqualToString: @""] || [[self.password text] isEqualToString: @""] ) {
我假设我不能在swift中使用isEqualToString。 任何帮助,将不胜感激。 谢谢。
用Swift你不再需要检查与isEqualToString
的相等性
你现在可以使用==
例:
let x = "hello" let y = "hello" let isEqual = (x == y)
现在isEqual是true
。
要检查对象之间的平等身份(感谢Bryan的修复),请使用新的运算符===
。 在这种情况下, x === y
是false
,因为x和y不是同一个variables。
使用==运算符而不是isEqual
比较string
Swift提供了三种比较string值的方法:string相等,前缀相等和后缀相等。
string平等
如果两个string值在相同顺序中包含完全相同的字符,则认为它们是相等的:
let quotation = "We're a lot alike, you and I." let sameQuotation = "We're a lot alike, you and I." if quotation == sameQuotation { println("These two strings are considered equal") } // prints "These two strings are considered equal" . . .
欲了解更多阅读官方文档的Swift (search比较string) 。
在Swift中,==运算符等价于Objective C的isEqual:方法(它调用isEqual方法而不是仅仅比较指针,并且有一个新的===方法用于testing指针是否相同),因此您可以只写这个为:
if username == "" || password == "" { println("Sign in failed. Empty character") }
我除了@JJSaccolo
答案,你可以创build自定义equals
方法作为新的string扩展,如:
extension String { func isEqualToString(find: String) -> Bool { return String(format: self) == find } }
和用法:
let a = "abc" let b = "abc" if a.isEqualToString(b) { println("Equals") }
对于原始的运算符==
可能会更好(像Javascript中的工作),但对我来说isEqual
方法给了一些代码清晰,我们比较string
希望这会有助于某人,
事实上,迅速的尝试是促使string被视为不那么像对象,更像是价值观。 但是,这并不意味着下面的swift不把string作为对象,因为你们都注意到,你仍然可以调用string的方法并使用它们的属性。
例如:-
//example of calling method (String to Int conversion) let intValue = ("12".toInt()) println("This is a intValue now \(intValue)") //example of using properties (fetching uppercase value of string) let caUpperValue = "ca".uppercaseString println("This is the uppercase of ca \(caUpperValue)")
在objectC中,你可以通过一个variables将引用传递给一个string对象,在其上调用方法,这几乎确定了string是纯对象的事实。
当你试图把String作为对象的时候,这里有一个问题,在swift中你不能通过一个variables来引用一个string对象。 Swift将总是传递一个全新的string副本。 因此,string在swift中通常被称为值types。 实际上,两个string文字不会相同(===)。 他们被视为两个不同的副本。
let curious = ("ca" === "ca") println("This will be false.. and the answer is..\(curious)")
正如你所看到的,我们已经开始摆脱传统的将弦线想象为物体的思维方式,并把它们看作是价值观。 因此,作为string对象的身份运算符处理的.isEqualToString不再是有效的,因为在Swift中永远不会得到两个相同的string对象。 你只能比较它的值,换句话说检查是否相等(==)。
let NotSoCuriousAnyMore = ("ca" == "ca") println("This will be true.. and the answer is..\(NotSoCuriousAnyMore)")
当你在swift中查看string对象的可变性时,这会变得更有趣。 但是,另一个问题,另一天。 你应该看看的东西,使它真的很有趣。 :)希望清除一些混乱。 干杯!
在Swift中, isEmpty
函数会检查string是否为空。
if username.isEmpty || password.isEmpty { println("Sign in failed. Empty character") }
对于UITextField文本比较,我使用下面的代码,工作正常,让我知道如果你发现任何错误。
if(txtUsername.text.isEmpty || txtPassword.text.isEmpty) { //Do some stuff } else if(txtUsername.text == "****" && txtPassword.text == "****") { //Do some stuff }