2017-10-25 15 views
0

文字列に文字 "S"または "C"が表示されているかどうかを調べようとしています。少なくとも1つは文字列に含まれますが、必ずしも両方である必要はありません。スウィフトで2つの文字列インデックスを比較する方法4

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 
     } 

は、私はエラーを取得しています:バイナリ演算子「<」は2つに適用することはできません「String.CharacterView.Index?」 (別名「オプション」)オペランド

私の経験では、これは通常、間違っている場合は別のことを意味します。 また、私は以下のifステートメントを変更しようとしました。

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

そして、私はエラーました:「?のInt」二項演算子「<」の2に適用することはできませんオペランド。

これを行う方法についてのお手伝いがありますが、ありがとうございます。

答えて

1

あなたはSnilであるかどうかをチェックし、Cフォールバック値を提供する必要があります。次に、2つの非オプションの値を比較することができます。

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

ありがとうございますが、CがnilでもS isntの場合はどうなるのでしょうか?私はまだそれを渡す必要があります。 – Blue

+1

@AaronMann編集した回答を確認してください。 – the4kman

+0

1つの簡単なことは、渡すことを確認するには、オプションの値は0ではなく9999のようにしてはいけませんか?それ以外の場合は、迅速な対応に感謝します。 – Blue

関連する問題