Blue
Blue

Reputation: 1448

How to compare two string indexes in swift 4

I'm trying to find whether the character "S" or "C" appears in a string. At least one will be in the string but not necessarily both.

let S = codeZ.characters.index(of: "S")
        let C = codeZ.characters.index(of: "C")

        if (C == nil) || S < C {
            nextView.sequential_flag = true
            nextView.continuous_flag = false
        }
        else if S == nil || (C < S) {
            nextView.sequential_flag = false
            nextView.continuous_flag = true
        }

I'm getting the error : Binary operator '<' cannot be applied to two 'String.CharacterView.Index?' (aka 'Optional') operands

In my experience with swift this usually means something else if wrong. Also I've tried changing the if statements to this below.

if (C == nil) || S?.encodedOffset < C?.encodedOffset {
            nextView.sequential_flag = true
            nextView.continuous_flag = false
        }

And I got the error : Binary operator '<' cannot be applied to two 'Int?' operands.

Any help on how to do this is much appreciated, thank you.

Upvotes: 0

Views: 1047

Answers (1)

glyvox
glyvox

Reputation: 58069

You should check if S is nil or not and provide a fallback value to C. Then you can compare the two non-optional values.

if let S = S, S.encodedOffset < (C?.encodedOffset ?? Int.max) {
    nextView.sequential_flag = true
    nextView.continuous_flag = false
}

Upvotes: 1

Related Questions