如何使用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倍
在
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"]]
得到它谢谢!有效!现在我需要将所有的值都放入字典中,并将它们与以相同字母开头的单词匹配。你能帮助我吗? –
你究竟需要什么?创建一个像这样的字典? 'let dict = [“A”:[“Aname1”,“Aname2”,“Aname3”],“B”:[“Bname1”,“Bname2”,“Bname3”]] –
是的,就像你说的,我需要它来自我的MutableArray。例如:MutableArray = [Aname1,Aname2,Bname1,Bname2,Cname]我需要将它存储在让字典 –
对于一个已排序的TableView,具有以下结构(在伪代码中)可能更有趣:'myDataArray = [{“A”:[item1,item2],“B”:[item4,item5,item6 ] ...}]',对于count,你只需要将'(myDataArray [indexPath.section]作为数组).count'? – Larme
我知道这种方式,我敢肯定它会工作,但我有60个值似乎是不必要的工作,如果我能从我的MutableArray –