gpt4 book ai didi

ios - 带部分的 UITableView 的最佳数据源配置

转载 作者:行者123 更新时间:2023-11-28 12:20:48 25 4
gpt4 key购买 nike

我有一个数组

    secInfArr = []
let secInf1 = SecInfObj.init()
secInf1.selected = true
secInf1.itemName = "item1"
secInf1.sectionName = "section3"
secInfArr.append(secInf1)

let secInf2 = SecInfObj.init()
secInf2.selected = true
secInf2.itemName = "item1"
secInf2.sectionName = "section1"
secInfArr.append(sectionInfo2)

let secInf3 = SecInfObj.init()
secInf3.selected = true
secInf3.itemName = "item1"
secInf3.sectionName = "section1"
secInfArr.append(secInf3)

let secInf4 = SecInfObj.init()
secInf4.selected = false
secInf4.itemName = "item1"
secInf4.sectionName = "section2"
secInfArr.append(secInf4)

我想创建一个 tableView,其中所有这些内容都按 sectionName 属性分组,所有 itemName 都是该部分中的内容按字母顺序排序。

到目前为止,我正在做我认为效率低下的事情。我正在对数组中的 sectionName 属性执行 Distinct 操作,然后使用它来命名部分并对其进行计数。之后,在 CellForRowAtIndexPath 方法中,我只使用 sectionName 过滤数组,然后添加单元格。

我也考虑过使用 NSFetchedResultsController 但我认为这不是一个好主意,因为数据本质上不是持久的,因此不需要在 managedObject 形式。

在这种情况下,为分组 TableView 构建数据的理想方式是什么?

最佳答案

我推荐一个面向对象的解决方案,例如具有 name 属性和 items 数组的结构,此处为通用形式。

struct Section<T> {

let name : String
var items = [T]()

}

如果 items 数组经常发生变化,请使用 class 而不是 struct 来利用引用语义。

填充数据源时,将 SecInfObj 对象分配给适当的 Section 实例。

项目可以很容易地排序,你可以声明你的数据源

var data = [Section<SecInfObj>]()

numberOfRows 中返回

return data[section].items.count

您通过索引路径获取部分

let section = data[indexPath.section]

然后是带有

的项目
let items = section.items[indexPath.row]

关于ios - 带部分的 UITableView 的最佳数据源配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44863673/

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