Wat is het Swift-equivalent van isEqualToString in Objective-C?

Ik probeer de onderstaande code uit te voeren:

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")
    }
}

Mijn vorige code was in Objective-C, wat prima werkte:

if([[self.username text] isEqualToString: @""] ||
    [[self.password text] isEqualToString: @""] ) {

Ik neem aan dat ik isEqualToStringniet in Swift kan gebruiken. Alle hulp wordt op prijs gesteld.


Antwoord 1, autoriteit 100%

Met Swift hoef je de gelijkheid niet meer te controleren met isEqualToString

U kunt nu ==

. gebruiken

Voorbeeld:

let x = "hello"
let y = "hello"
let isEqual = (x == y)

nu isEqual is true.


Antwoord 2, autoriteit 11%

Gebruik de operator ==in plaats van isEqual

Snaren vergelijken

Swift biedt drie manieren om tekenreekswaarden te vergelijken: tekenreeksgelijkheid, voorvoegselgelijkheid en achtervoegselgelijkheid.

String Gelijkheid

Twee tekenreekswaarden worden als gelijk beschouwd als ze exact dezelfde tekens in dezelfde volgorde bevatten:

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"
.
.
.

Lees voor meer informatie officiële documentatie van Swift (zoek Comparing Strings).


Antwoord 3, autoriteit 3%

Als aanvulling op het antwoord @JJSaccolo, kunt u een aangepaste equals-methode maken als een nieuwe String-extensie, zoals:

extension String {
     func isEqualToString(find: String) -> Bool {
        return String(format: self) == find
    }
}

En gebruik:

let a = "abc"
let b = "abc"
if a.isEqualToString(b) {
     println("Equals")
}

Zeker, de originele operator ==is misschien beter (werkt als in Javascript) maar voor mij geeft de isEqual-methode enige code-duidelijkheid die we vergelijken met Strings

Ik hoop dat het iemand zal helpen,


Antwoord 4, autoriteit 2%

In Swift is de ==-operator gelijk aan de isEqual:-methode van Objective C (deze roept de isEqual-methode aan in plaats van alleen pointers te vergelijken, en er is een nieuwe ===-methode om te testen of de pointers hetzelfde zijn), dus u kan dit gewoon schrijven als:

if username == "" || password == ""
{
    println("Sign in failed. Empty character")
}

Other episodes