如何使用swift在带有来自MutableArray的标题的TableView中创建字母部分3

问题描述:

我试图向我的表添加部分,但我无法设法从我的MutableArray(包含60个值的我的database)中将我的第一个字母转换为一个dictionary。 我想创建字母sections,其中第一个字母为标题,第二个行中的行数为所有以该字母开头的值。如何使用swift在带有来自MutableArray的标题的TableView中创建字母部分3

我的代码:

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倍

+2

对于一个已排序的TableView,具有以下结构(在伪代码中)可能更有趣:'myDataArray = [{“A”:[item1,item2],“B”:[item4,item5,item6 ] ...}]',对于count,你只需要将'(myDataArray [indexPath.section]作为数组).count'? – Larme

+0

我知道这种方式,我敢肯定它会工作,但我有60个值似乎是不必要的工作,如果我能从我的MutableArray –

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"]] 
+0

得到它谢谢!有效!现在我需要将所有的值都放入字典中,并将它们与以相同字母开头的单词匹配。你能帮助我吗? –

+0

你究竟需要什么?创建一个像这样的字典? 'let dict = [“A”:[“Aname1”,“Aname2”,“Aname3”],“B”:[“Bname1”,“Bname2”,“Bname3”]] –

+0

是的,就像你说的,我需要它来自我的MutableArray。例如:MutableArray = [Aname1,Aname2,Bname1,Bname2,Cname]我需要将它存储在让字典 –