如何使用 swift 从 MutableArray 使用 header 在 TableView 中创建字母部分 3
How to create alphabetic sections in TableView with header from MutableArray using swift 3
我正在尝试向我的 table 添加部分,但我无法从我的 MutableArray
(我的 database
包含 60 个值)中获取我的第一封信一个dictionary
。
我想创建字母 sections
,第一个字母作为 header,部分中的行数作为所有以该字母开头的值。
我的代码:
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({ [=14=].characters.first })))
var result = [String: [String]]()
for character in characters.map({ String([=14=]) }) {
result[character] = array.filter({ [=14=].hasPrefix(character) })
}
print(result) // output: ["B": ["Bname1", "Bname2", "Bname3"], "A": ["Aname1", "Aname2", "Aname3"]]
我正在尝试向我的 table 添加部分,但我无法从我的 MutableArray
(我的 database
包含 60 个值)中获取我的第一封信一个dictionary
。
我想创建字母 sections
,第一个字母作为 header,部分中的行数作为所有以该字母开头的值。
我的代码:
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({ [=14=].characters.first })))
var result = [String: [String]]()
for character in characters.map({ String([=14=]) }) {
result[character] = array.filter({ [=14=].hasPrefix(character) })
}
print(result) // output: ["B": ["Bname1", "Bname2", "Bname3"], "A": ["Aname1", "Aname2", "Aname3"]]