gpt4 book ai didi

swift - 如何让我的 tableview 中的一个部分下的多个项目按字母顺序排序?

转载 作者:搜寻专家 更新时间:2023-11-01 07:26:34 25 4
gpt4 key购买 nike

我已经实现了 FetchedControllerDelegate,并且我对表格 View 进行了排序,以便所有内容都按字母顺序显示,并且部分标题正在工作。但是,例如,对于带有字母“T”的部分,如果地点名称不是完全相同的词,则 TableView 有两个不同的部分。例如,对于“Taco Bell”和“Texas”,它们分别位于标签为“T”的不同部分下。我想要它,以便每个以“T”开头的单词都在“T”部分名称下。我找到了有关如何执行此操作的信息,但它适用于 Obj-C 而不是 Swift。此外,还有涉及设置 transient 属性的答案,但我不知道从哪里开始实现它

How to use the first character as a section name

NSFetchedResultsController with sections created by first letter of a string

    // Add Sort Descriptors
let sortDescriptor = NSSortDescriptor(key: "name", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]

// Initialize Fetched Results Controller
let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest,
managedObjectContext: self.managedObjectContext,
sectionNameKeyPath: "name", cacheName: nil)

然后是 TableView 方法:

    override func tableView(tableView: UITableView, sectionForSectionIndexTitle title: String, atIndex index: Int) -> Int {
return fetchedResultsController.sectionForSectionIndexTitle(title, atIndex: index)
}

override func sectionIndexTitlesForTableView(tableView: UITableView) -> [String]? {
return fetchedResultsController.sectionIndexTitles
}

override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 20
}

override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if let sections = fetchedResultsController.sections {
let currentSection = sections[section]
if let char = currentSection.name.characters.first {
return String(char)
}
return currentSection.name
}

return nil
}

最佳答案

在您的 NSManagedObject 子类中添加一个计算属性并返回名称的第一个字符,

var nameFirstChar: String {
get {
if let char = self.name?.characters.first {
return String(char)
}
return "#"
}
}

现在将 nameFirstChar 设置为您的部分键路径,如

let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: "nameFirstChar", cacheName: nil)

关于swift - 如何让我的 tableview 中的一个部分下的多个项目按字母顺序排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35714844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com