2016-11-28 2 views
-1

Sind beide gleich Saiten?Vergleichen von String mit Optional zu nicht optional String

enter image description here

ich sie versucht, den Druck, finden Sie die Antwort:

enter image description here

sie zu vergleichen, wenn versucht, es false

enter image description here

I erweist kann das aber nicht verstehen sie beide Buchstaben sind gleich auf Arabisch, aber immer noch heißt es, sie sind nicht!

Hier ist eine kontextuelle Bild von dem, was passiert:

enter image description here

+0

Scheint, als sollten sie gleich sein. Dann wieder, es ist 5 Uhr morgens und ich brauche Schlaf – Alexander

+1

"Optional" scheint Zeichen in Ihrer Zeichenfolge zu sein, aber Sie scheinen zu denken, dass es Teil des Typs ist? – CRD

+0

@CRD, Ich habe die Frage aktualisiert, um zu zeigen, wie der 'firstLetter' initialisiert wird.Sie denken, Sie sprechen Sinn und wir können es herausfinden. –

Antwort

2

Es hängt davon ab:


Dies ist ein nicht-optional i

let a = "i" // "i" 

Dies ist eine optionale i

let b : String? = "i" // "i" 

a und b sind gleich

a == b // true 

Dies ist jedoch eine optionale i erstellt mit String Interpolation

let c = "\(b)" // "Optional("i")" 

Jetzt a und c sind nicht gleich

a == c // false 

Diese comparation ist false weil String Interpolation wörtliche Optional auf die Zeichenfolge hinzufügt.

+0

Wow! Genius. Danke für das Wissen. Obwohl ich die Frage, die ich gestellt hatte, beantwortet hatte, ist Ihre Antwort präziser und kenntnisreicher. –

0

Wie pro Kommentar des CRD war die Optional irreführend. Es stellte sich heraus, dass der Typ Optional eigentlich ein String war. Hier ist, wie ich den Code geändert, um die ersten Buchstaben zu vergleichen:

for song in allSongs{ 
    let firstLetter = song.name?.characters.first 
    var index = 0 
    for letter in sectionTitles{ 
     if(letter.characters.first == firstLetter){ 
      break; 
     } 
     index += 1 
    } 
    var array = sectionedSongs[index] 
    array.append(song) 
} 

Hinweis sectionedSongs ist nur ein Array von Arrays.