我正在与@SectionedFetchRequest
订购系统作斗争。
我有一个Word
对象,它有两个属性:
nameLanguageIdentifier
表示语言代码,如it、fr、de、en、...name
是一个类似“船”的单词
在我的列表中,我希望我的单词按name
排序,部分按nameLanguageIdentifier
排序。下面是一个小例子:
- 第1节:en
- 自行车
- 船
- 汽车
- 第2节:fr
- 阿尔布雷
- 莫托
- 韦洛
诸如此类。..
我写了这个fetch request:
@SectionedFetchRequest<String?, Word>(sectionIdentifier: \.nameLanguageIdentifier, sortDescriptors: [SortDescriptor(\.name)])
var words: SectionedFetchResults<String?, Word>
下面是我的视图体:
List(words) { section in
Section(header: Text(section.id)) {
ForEach(section) { word in
Text(word.name)
}
}
}
问题是我得到的是一个完全随机的顺序。例如,我可以在英语部分中包含法语单词。当我同时使用nameLanguageIdentifier
作为节标识符和排序描述符时,我就摆脱了这种行为。但在这种情况下,我的话不再按名字排序在自己的部分。
我真的希望有人能帮助我,非常感谢。
1条答案
按热度按时间abithluo1#
正如@joakim提到的,你必须指定所有你想使用的排序描述符,不仅是你的数据到节的描述符,还有你的节的描述符。
对于我的例子,
[SortDescriptor(\.nameLanguageIdentifier), SortDescriptor(\.name)]
可以做到这一点。