Set
は、テーブルビューのデータソースとしては適していません。 Dictionary
も良い選択ではありません。両方とも順序付けされていないコレクションであり、テーブルビューのデータソースには明確な順序が必要です。ソース配列を配列の配列に分割することをお勧めします。各配列には、アルファベット順にソートされた特定の文字で始まるすべての単語が含まれています。コードは、それは次のようになりますか:あなたはすべての文字のエントリを持つ配列をしたい場合はそので始まる言葉が存在しない場合でも、
["Aces", "Achy-breaky heart", "Acorn", "apple", "arf"]
["baseballs"]
["Cards"]
["Dogs"]
["flounder"]
["Manbaby"]
["songbirds", "Suet"]
["Tiny-fingered, cheeto-faced, ferret-wearing sh*tgibbon"]
["woofing"]
:次のような出力が得
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)}
、if !thisArray.isEmpty
試験を取り除く。
[配列のアルファベット順のソート](https:// stackoverflow。com/questions/36394813 /アルファベット順のアルファベット順) –
既にソートされている場合、何をしようとしていますか?なぜあなたは配列全体を反復して、 "A"というキーとメンバーの配列としての値を持つ辞書の配列を作成しませんか?ここで並べ替えるものはありません。あなたが見つけた順番で辞書内のこの配列に要素を追加し続けるだけです。 – adev
質問を入力して、希望する結果で質問を編集する必要があります。あなたがここで期待していることは明確ではありません。 – rmaddy