SwiftUI - группа NSFetchRequest по дате для отображения в списке с разделами - PullRequest
0 голосов
/ 16 октября 2019

Я создаю приложение SwiftUI, в котором оно показывает список значений, содержащих их дату и продолжительность. На данный момент ContentView просто перечисляет все значения (дата по возрастанию).

Я хотел бы добиться того, чтобы объекты были сгруппированы по дате и в соответствующие разделы, например:

Текущий

  • Раздел: «дата»
    • Продолжительность: 50, Дата: 1 января
    • Продолжительность: 48, Дата: 1 января
    • Продолжительность: 21, Дата: 2 января
    • Продолжительность: 57, Дата: 3 января

Цель

  • Раздел: "1 января"
    • Продолжительность: 50, Дата: 1 января
    • Продолжительность: 48, Дата: 1 января
  • Раздел: «2 января»
    • Продолжительность: 21, Дата: 2 января
  • Раздел: «3 января»
    • Продолжительность: 57, Дата: 3 января

Любая помощь очень ценится, большое спасибо.

Код

// MARK: - ContentView

struct ContentView: View {

    // MARK: - Variables

    @Environment(\.managedObjectContext) var managedObjectContext
    @FetchRequest(fetchRequest: EntityCore.fetch()) var entities

    // MARK: - Body

    var body: some View {

        NavigationView {
            List {
                Section(header: Text("Date")) {
                    ForEach(entities) { (entity) in
                        EntityView(entity: entity)

                    }
                }

            }.listStyle(GroupedListStyle())
             .navigationBarTitle(Text("Entities"))

        }
    }
}

// MARK: - PlankCore

public class EntityCore: NSManagedObject, Identifiable {

    // MARK: - Variables

    @NSManaged public var duration: Int64
    @NSManaged public var date: Date?

    // MARK: - Fetch

    static func fetch() -> NSFetchRequest<EntityCore> {

        let request = EntityCore.fetchRequest() as! NSFetchRequest<EntityCore>
        request.sortDescriptors = [NSSortDescriptor(key: "date", ascending: true)]

        return request

    }
}
...