If statement 将可选字符串与非可选字符串进行比较

If statement 将可选字符串与非可选字符串进行比较,if-statement,swift3,If Statement,Swift3,它们都是相等的字符串吗? 我尝试打印它们,以下是响应: 当尝试比较它们时,结果是false 我听不懂,虽然这两个字母在阿拉伯语中是一样的,但它仍然说,它们不是 下面是一幅更具背景意义的画面: 根据CRD的评论,可选的是误导性的。事实证明,表面上的类型Optional实际上是一个字符串。下面是我如何更改代码以比较第一个字母: for song in allSongs{ let firstLetter = song.name?.characters.first var index

它们都是相等的字符串吗?

我尝试打印它们,以下是响应:

当尝试比较它们时,结果是
false

我听不懂,虽然这两个字母在阿拉伯语中是一样的,但它仍然说,它们不是

下面是一幅更具背景意义的画面:


根据CRD的评论,可选的
是误导性的。事实证明,表面上的类型
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
只是一个数组。

根据CRD的评论,可选的
有误导性。事实证明,表面上的类型
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
只是一个数组。

这取决于:


这是一个非可选的
i

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

这是可选的
i

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

a
b
相等

a == b // true

但是,这是一个可选的
i
,使用字符串插值创建

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

现在
a
c
不相等

a == c // false
此比较为
false
,因为字符串插值将文本
可选
添加到字符串中。

这取决于:


这是一个非可选的
i

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

这是可选的
i

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

a
b
相等

a == b // true

但是,这是一个可选的
i
,使用字符串插值创建

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

现在
a
c
不相等

a == c // false

此比较为
false
,因为字符串插值将文本
可选
添加到字符串中。

似乎它们应该相等。再说一次,现在是凌晨5点,我需要睡眠。字符串中的“可选”字符似乎是字符,但您似乎认为它是类型的一部分?@CRD,我更新了问题,以显示“第一个字母”是如何初始化的。它认为,你说的很有道理,我们可以弄明白。@ChanchalRaj检查一下这个@CRD,你是对的,伙计!看起来他们应该是平等的。再说一次,现在是凌晨5点,我需要睡眠。字符串中的“可选”字符似乎是字符,但您似乎认为它是类型的一部分?@CRD,我更新了问题,以显示“第一个字母”是如何初始化的。它认为,你说的很有道理,我们可以弄明白。@ChanchalRaj检查一下这个@CRD,你是对的,伙计!哇!天才。谢谢你的知识。虽然我已经回答了我问的问题,但你的回答更准确,更博学。哇!天才。谢谢你的知识。虽然我已经回答了我所问的问题,但你的回答更准确、更博学。