Вернувшись к цели - c, я мог бы получить секционированный список объектов из Core Data, используя что-то вроде этого:
self.fetchedResultsController = [[NSFetchedResultsController alloc]
initWithFetchRequest:fetchRequest
managedObjectContext:managedObjectContext
sectionNameKeyPath:@"ispurchased"
cacheName:nil];
И тогда NSFetchedResultsController автоматически выдаст мне данные в разделах и строках .
Я впервые экспериментирую со SwiftUI и пытаюсь выяснить, как создать секционированный список вроде этого. Я нашел много примеров, в которых используются некоторые данные консервативных массивов, которые предварительно структурированы в секционированном режиме, но я не могу понять, как выполнить секционированный запрос FetchRequest или как интегрировать его с List.
struct EasyModeList: View {
@FetchRequest(
sortDescriptors: [
NSSortDescriptor(keyPath: \EasyMode.ispurchased, ascending: true),
NSSortDescriptor(keyPath: \EasyMode.ispurchasable, ascending: false),
NSSortDescriptor(keyPath: \EasyMode.name, ascending: true),
],
animation: .default)
var easymodes: FetchedResults<EasyMode>
@Environment(\.managedObjectContext)
var viewContext
var body: some View {
List {
ForEach(self.easymodes, id: \.self) { easymode in
NavigationLink(
destination: DetailView(easymode: easymode)
) {
VStack {
Text("\(easymode.name!)")
}
}
}
}
}
}
Легко ли SwiftUI поддерживает такие виды секционированных списков? Есть ли другая парадигма, на которую я должен переключить свой мозг?