簡體   English   中英

如何使用Swift 3在MutableArray的標頭中在TableView中創建字母部分

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM