Swift 来自单个数组的 Collectionview 部分

Swift Collectionview Sections from a single array

我有一个数组 IDs ["one", "two", "three"...]

这些 Ids 与我从 URLSession 得到的 json 匹配,然后显示在 collectionview 中。 目前它只是一个简单的 collectionView,具有通过长按和拖动重新排序的功能。 但我需要将它分成几个部分的可能性。

最好的办法是使节动态化,这样我就可以添加任意数量的节,然后将单元格分类到节中。 如果每个部分都有一个数组,比如

,我就能做到

section1 = ["one", "two"]

section2 = ["three", "four"]

但我不知道如何在我当前的设置中实现这一点。

不要这样做。我相信您可以想出一种方法来保留单个数组,但不要这样做。维护噩梦会缠着你。

创建分解为数组数组的数据视图。

struct MySection {
    let sectionId: String // or whatever section metadata you need.
    let data: [Data] // or whatever your real type is.
}

在集合视图控制器中

var dataView: [MySection]

1个部分的所有数据

self.dataView = [MySection(sectionId: "all data", data: self.data)]

将数据分组到不同的部分

self.dataView = self.data.reduce([]) { dataView, datum in
    var dataView = dataView // make a mutable data view

    let sectionId = self.determineSectionIdFromDatum(datum) // <-- slotting into sections

    // Add into an existing section or into a new section
    if let index = dataView.index(where: { [=13=].sectionId == sectionId }) {
        let data = dataView[index].data + [datum]
        dataView[index] = MySection(sectionId: sectionId, data: data)
    } else {
        let data = [datum]
        dataView.append(MySection(sectionId: sectionId, data: data))
    }

    return dataView
}

此时您可能需要对部分或部分中的数据进行排序。