如何在swift 4中比较两个字符串索引

时间:2017-10-25 15:58:38

标签: swift string swift4

我试图找出角色" 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
        }

我收到错误:二元运算符&#39;&lt;&#39;不能应用于两个&#39; String.CharacterView.Index?&#39; (又名&#39;可选&#39;)操作数

根据我对swift的经验,这通常意味着其他错误。 我也尝试将if语句更改为以下内容。

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

我得到了错误:二元运算符&#39;&lt;&#39;不能适用于两个&#39; Int?&#39;操作数。

非常感谢有关如何做到这一点的任何帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

您应该检查S是否nil,并向C提供后备值。然后,您可以比较两个非可选值。

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