What is the Swift equivalent of isEqualToString in Objective-C?
I am trying to run the code below:
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")
}
}
My previous code was in Objective-C, which was working fine:
if([[self.username text] isEqualToString: @""] ||
[[self.password text] isEqualToString: @""] ) {
I assume I cannot use isEqualToString
in Swift. Any help would be appreciated.
Solution 1:
With Swift you don't need anymore to check the equality with isEqualToString
You can now use ==
Example:
let x = "hello"
let y = "hello"
let isEqual = (x == y)
now isEqual is true
.
Solution 2:
Use == operator instead of isEqual
Comparing Strings
Swift provides three ways to compare String values: string equality, prefix equality, and suffix equality.
String Equality
Two String values are considered equal if they contain exactly the same characters in the same order:
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"
.
.
.
For more read official documentation of Swift (search Comparing Strings).
Solution 3:
I addition to @JJSaccolo
answer, you can create custom equals
method as new String extension like:
extension String {
func isEqualToString(find: String) -> Bool {
return String(format: self) == find
}
}
And usage:
let a = "abc"
let b = "abc"
if a.isEqualToString(b) {
println("Equals")
}
For sure original operator ==
might be better (works like in Javascript) but for me isEqual
method gives some code clearness that we compare Strings
Hope it will help to someone,
Solution 4:
In Swift, the == operator is equivalent to Objective C's isEqual: method (it calls the isEqual method instead of just comparing pointers, and there's a new === method for testing that the pointers are the same), so you can just write this as:
if username == "" || password == ""
{
println("Sign in failed. Empty character")
}