A Set
对于表视图的数据源不是一个好的选择。 A Dictionary
也不是一个好选择。两者都是无序集合,并且表视图的数据源需要明确的顺序。我建议将源数组分成数组数组,其中每个子数组包含以特定字母开头的所有单词,按字母顺序排序。该代码做到这一点可能是这样的:
import UIKit
let strings = ["arf",
"woofing",
"flounder",
"Manbaby",
"Dogs",
"baseballs",
"Suet",
"Cards",
"Tiny-fingered, cheeto-faced, ferret-wearing sh*tgibbon",
"apple",
"Acorn",
"Achy-breaky heart",
"songbirds",
"Aces"]
let aValue = "a".unicodeScalars.first!.value
let zValue = "z".unicodeScalars.first!.value
var result = [[String]]()
for value in aValue...zValue {
let aChar = Character(UnicodeScalar(value)!)
let thisArray = strings
.filter{$0.lowercased().characters.first! == aChar}
.sorted{$0.caseInsensitiveCompare($1) == .orderedAscending}
if !thisArray.isEmpty {
result.append(thisArray)
}
}
result.forEach{print($0)}
这将产生以下的输出:如果你想用每一个字母项的数组
["Aces", "Achy-breaky heart", "Acorn", "apple", "arf"]
["baseballs"]
["Cards"]
["Dogs"]
["flounder"]
["Manbaby"]
["songbirds", "Suet"]
["Tiny-fingered, cheeto-faced, ferret-wearing sh*tgibbon"]
["woofing"]
,即使有与开始无话信,摆脱if !thisArray.isEmpty
测试。
[按字母顺序在swift中对数组排序](https:// stackoverflow。com/questions/36394813 /按数组排序的字母顺序排列) –
如果它已经排序,那么你想要做什么?为什么不迭代数组并创建一个字典数组,并将键作为“A”并将其作为成员数组赋值?这里没有什么可以排序的。只需按照您找到的顺序向字典内的数组添加元素即可。 – adev
您需要根据您的输入提供期望的结果来编辑您的问题。目前还不清楚你期望的是什么。 – rmaddy