我有一个自定义对象
class Keyword
{
var keyword : String
var description : String
init(keywordID : Int, keyword : String, description : String)
{
self.keyword = keyword;
self.description = description;
}
}
它的数据就像
var keywords = [Keyword]()
keywords.append(Keyword(keyword: "abc", description: "dsd dfgdf dghj"))
keywords.append(Keyword(keyword: "adet", description: "dsd dfgdf dghj"))
keywords.append(Keyword(keyword: "niuk", description: "dsd dfgdf dghj"))
keywords.append(Keyword(keyword: "sdg", description: "dsd dfgdf dghj"))
keywords.append(Keyword(keyword: "sax", description: "dsd dfgdf dghj"))
keywords.append(Keyword(keyword: "trygh", description: "dsd dfgdf dghj"))
为了在UITableView中创建节,我需要将第一个字母作为节标题。对于上面的示例,我需要以下数据
我创建了另一个对象来存储上述数据
class KeywordSection
{
var section : Character
var keywords : [Keyword]
init(section : Character, keywords : [Keyword])
{
self.section = section;
self.keywords = keywords;
}
}
我在Android中通过遍历数组并提取第一个字母并检查各个部分来完成此操作。另外,我需要检查第一个字母是否为字母,如果需要,则必须添加该部分,否则该部分将为“#”(与iphone通讯录应用相同)
将此方法添加到您的关键字类中:
var sectionName : String {
return keyword.substringToIndex(1) ?? "?"
}
然后使用此代码创建节标题到关键字的字典:
var sections = [String:[Keyword]]()
for k in keywords {
let s = k.sectionName
if let oldKeywords = sections[s] {
var mutableOldKeywords = oldKeywords
mutableOldKeywords.append(k)
sections[s] = mutableOldKeywords
} else {
sections[s] = [k]
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句