它们都是相同的字符串吗?
我尝试打印它们,以下是回复:
尝试比较它们时,结果是false
我无法理解,虽然他们两个字母在阿拉伯语中是相同的,但它仍然说,他们不是!
以下是有关正在发生的事情的更具背景的图片:
答案 0 :(得分:2)
取决于:
这是一个非可选的i
let a = "i" // "i"
这是一个可选的i
let b : String? = "i" // "i"
a
和b
相等
a == b // true
但是,这是使用String Interpolation
创建的可选i
let c = "\(b)" // "Optional("i")"
现在a
和c
不相等
a == c // false
此比较为false
,因为字符串插值会在字符串中添加文字Optional
。
答案 1 :(得分:0)
根据CRD的评论,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
只是一个数组数组。