2017-10-25 7 views
0

Ich versuche zu finden, ob das Zeichen "S" oder "C" in einer Zeichenfolge angezeigt wird. Mindestens einer wird in der Zeichenfolge sein, aber nicht unbedingt beides.Wie zwei String-Indizes in Swift zu vergleichen 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 
     } 

Ich erhalte die Fehlermeldung: Binary Operator '<' kann nicht auf zwei angewendet werden 'String.CharacterView.Index?' (aka 'Optional') Operanden

In meiner Erfahrung mit Swift bedeutet dies normalerweise etwas anderes, wenn falsch. Auch ich habe versucht, die if-Anweisungen dazu unten zu ändern.

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

Und ich habe den Fehler: ‚Int‘ Binary Operator ‚<‘ kann nicht auf zwei angewendet werden Operanden.

Jede Hilfe, wie dies zu tun ist, ist sehr zu schätzen, danke.

Antwort

1

sollten Sie überprüfen, ob Snil ist oder nicht und bieten eine Wert Ausweich-C. Dann können Sie die zwei nicht optionalen Werte vergleichen.

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

Vielen Dank, aber kann ich fragen, was passiert, wenn C ist nil, aber S nicht? Ich brauche das noch, um zu bestehen. – Blue

+1

@AaronMann Überprüfen Sie meine bearbeitete Antwort. – the4kman

+0

Eine schnelle Sache, sollte nicht der optionale Wert wie 9999 anstatt 0 sein, um sicher zu sein, zu bestehen? Ansonsten danke für die schnellen Antworten. – Blue