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 === yfalse ,因为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 }