Swift 确定NSCollectionViewCompositionLayout的节标识符

Swift 确定NSCollectionViewCompositionLayout的节标识符,swift,macos,cocoa,nscollectionview,Swift,Macos,Cocoa,Nscollectionview,我正在尝试使用NSCollectionViewDiffableDataSource和nsCollectionViewCompositionLayout创建一个具有动态节数的NSCollectionView 集合视图用于显示搜索结果,节的数量取决于找到的结果的类型和数量。每个部分使用不同的布局显示其内容类型 数据源声明为NSCollectionViewDiffableDataSource,其中SearchResult是一个使用UUID()实现Hashable的类。结果为零的节不是空的,而是不存在于

我正在尝试使用
NSCollectionViewDiffableDataSource
nsCollectionViewCompositionLayout
创建一个具有动态节数的
NSCollectionView

集合视图用于显示搜索结果,节的数量取决于找到的结果的类型和数量。每个部分使用不同的布局显示其内容类型

数据源声明为
NSCollectionViewDiffableDataSource
,其中
SearchResult
是一个使用
UUID()
实现
Hashable
的类。结果为零的节不是空的,而是不存在于集合视图中

我遇到的困难之一是确定版面的
sectionProvider
中与
sectionIndex
对应的节标识符:

private func createLayout()->NSCollectionViewLayout{
让sectionProvider={(sectionIndex:Int,layoutEnvironment:NSCollectionLayoutEnvironment)->中的NSCollectionLayoutSection
//如何确定与“sectionIndex”对应的节标识符?
//创建适合该节类型的“NSCollectionLayoutSection”
let section=NSCollectionLayoutSection(/*…*/)
返回段
}
返回nsCollectionViewCompositionLayout(sectionProvider:sectionProvider)
}
由于集合视图的节数随搜索结果的不同而变化,因此节
0
中显示的项目类型可能会发生变化


有关示例项目,请参阅。

向数据源询问快照,并查看节标识符列表@matt I也有类似的想法,但出于某种原因,在provider部分调用self.dataSource.snapshot()会导致segfault(code=EXC\u I386\u INVOP,subcode=0x0)。我还无法确定原因。您可能需要一些其他对象在节号和节类型之间映射。但是你确实没有展示足够的代码来提供进一步的建议。也许,但我觉得我遗漏了一些东西,因为可扩散数据源背后的一个原则是UI真理的单一来源。是的,但单一来源必然是可扩散数据源的想法是一个误解。从其他对象映射到表的可扩散数据源也是一种正确的策略。