How to compare value in quick option

var someString: String? = "a"    
someString = "b" 
// or someString = nil

Condition: someString is not nil and "a"

Example:

if someString != nil && someString != "a" {

}

Is it possible to install single?

+4
source share
7 answers

I assume that you want that you have tested someString != niland someString != "a"in a logical expression (rather than the two in and out).

No, I don’t think it’s possible to use the built-in operators, but we will implement the string extension implementation as follows:

extension String {
    func isDifferentThan(value: String?) -> Bool {
        return value != nil && self != value?
    }
}

and you can use the following:

someString = nil
"a".isDifferentThan(someString) // Return false

someString = "b"
"a".isDifferentThan(someString) // Return true

someString = "a"
"a".isDifferentThan(someString) // Return false

Addition . A more elegant solution is to define your own logical operator. I used !~=, but feel free to use your own.

infix operator !~= { associativity left }
func !~= (a: String?, b: String?) -> Bool {
    if a == nil || b == nil {
        return false
    }

    return a != b
}

Tested as follows:

someString = nil
someString !~= "a" // Returns false

someString = "b"
someString !~= "a" // Returns true

someString = "a"
someString !~= "a" // Returns false

someString = nil
someString !~= nil // Returns false

nil (, nil, true, , " " true)

+3

Swift 3 - :

if let bString = someString, bString != "a" {
    print("bString: '\(bString)' is not nil and is different from 'a'")
}

https://github.com/apple/swift-evolution/blob/master/proposals/0099-conditionclauses.md

+7

where:

if let forcedString = someString where forcedString != "a" {
    print("Yea")
} else {
    print("Err")
}
+4

:

if someString? == "a" {
+2

swift 1.2 var a:int?; var b:int?

nil == nil; // true
nil > nil;  // false
nil > 2;    // false
2 > nil;    // true
2 > 1;      // true
+2

:

func existsAnd<T: Equatable>(x:T?, _ it:T ) -> Bool {
    return x.flatMap { $0 == it } ?? false
}

var str : String? = "hello"
existsAnd(str, "hello")
str = nil
existsAnd(str, "hello")
+1

, (, ):

if someName.compare(displayName) == .OrderedSame{
  //true
}
0

All Articles