我试图找出字符“S”或“C”是否出现在字符串中。字符串中至少有一个,但不一定同时有两个。

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
        }

我得到一个错误:二进制运算符“根据我对斯威夫特的经验,这通常意味着如果错了的话,还会有别的事情发生。
我也试过把if语句改成下面这个。
if (C == nil) || S?.encodedOffset < C?.encodedOffset {
            nextView.sequential_flag = true
            nextView.continuous_flag = false
        }

我得到一个错误:二进制运算符“非常感谢您对我们的帮助,谢谢。

最佳答案

您应该检查S是否nil,并为C提供一个回退值。然后可以比较这两个非可选值。

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

10-05 20:05