2016-11-28 44 views
-1

両方が等しい文字列ですか?文字列とオプションとの比較オプション文字列

enter image description here

私はそれらを印刷しようとした、次の応答である:

enter image description here

それらを比較しようとしたとき、それは私false

enter image description here

であることが判明しかし、理解することはできません彼らは両方の文字がアラビア語で同じですが、それでも、彼らはそうではないと言います!ここで

は何が起こっているかのより多くの文脈の画像です:CRDのコメントを1として

enter image description here

+0

同じであるように見えます。それからもう一度、それは午前5時であり、私は睡眠が必要です – Alexander

+1

"オプション"はあなたの文字列の文字のように見えますが、あなたはそれがそのタイプの一部だと思っているようです? – CRD

+0

@CRD、私は 'firstLetter'がどのように初期化されているかを示す質問を更新しました。あなたが話していると思って、私たちはそれを理解することができます。 –

答えて

2

それは異なります。これは


これはオプションi

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

ある i

let a = "i" // "i" 

非オプション10

ab

a == b // true 

等しいしかし、これは文字列補間

​​

acで作成された任意iない等しい

ありさ文字列の補間は、文字列リテラル Optionalを追加するため
a == c // false 

このcomparationはfalseです。

+0

うわー!天才。知識をありがとう。私が質問した質問には答えましたが、あなたの答えはより正確で知識があります。 –

0

Optionalは誤解を招くでした。一見、タイプOptionalは実際には文字列であることが判明しました。ここで私は最初の文字を比較するために、コードを変更する方法である:

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) 
} 

sectionedSongsは、配列の配列だけです。