[英]How to create alphabetic sections in TableView with header from MutableArray using swift 3
我正在嘗試向表中添加節,但是我無法將MutableArray
(包含60個值的database
)中的第一個字母放入dictionary
。 我想創建第一個字母為標題的字母sections
並以該字母開頭的所有值創建sections
的行數。
我的代碼:
func getSectionsFromData() -> Dictionary<Character,String> {
var sectionDictionary = Dictionary<Character, String>()
let crime: CrimesInfo = marrCrimesNames.object(at: 0) as! CrimesInfo
var crimeFirstLetter: AnyObject
let crimeName = crime.Name
for crime in marrCrimesNames {
crimeFirstLetter = crimeName.characters.first! as AnyObject
print(crimeFirstLetter)
}
return sectionDictionary
}
輸出:
“ A” // 60次
在
for crime in marrCrimesNames {
crimeFirstLetter = crimeName.characters.first! as AnyObject
print(crimeFirstLetter)
}
你不實際使用的crime
變量,而不是您只使用crimeName
這就是為什么你得到“A”的所有時間。
試試吧
for crime in marrCrimesNames {
crimeFirstLetter = crime.Name.characters.first! as AnyObject
print(crimeFirstLetter)
}
現在創建一個像這樣的字典:
let dict = ["A" : ["Aname1", "Aname2", "Aname3"], "B" : ["Bname1", "Bname2", "Bname3"]]
從這樣的數組中:
let array = ["Aname1", "Aname2", "Aname3", "Bname1", "Bname2", "Bname3"]
您可以使用以下代碼:
let dict = ["A" : ["Aname1", "Aname2", "Aname3"], "B" : ["Bname1", "Bname2", "Bname3"]]
let characters = Array(Set(array.flatMap({ $0.characters.first })))
var result = [String: [String]]()
for character in characters.map({ String($0) }) {
result[character] = array.filter({ $0.hasPrefix(character) })
}
print(result) // output: ["B": ["Bname1", "Bname2", "Bname3"], "A": ["Aname1", "Aname2", "Aname3"]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.