ios @SectionedFetchRequest在SwiftUI中未正确排序

ubof19bj  于 2023-05-02  发布在  iOS
关注(0)|答案(1)|浏览(88)

我正在与@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作为节标识符和排序描述符时,我就摆脱了这种行为。但在这种情况下,我的话不再按名字排序在自己的部分。
我真的希望有人能帮助我,非常感谢。

abithluo

abithluo1#

正如@joakim提到的,你必须指定所有你想使用的排序描述符,不仅是你的数据到节的描述符,还有你的节的描述符。
对于我的例子,[SortDescriptor(\.nameLanguageIdentifier), SortDescriptor(\.name)]可以做到这一点。

相关问题