SwiftUI - 按日期对 NSFetchRequest 进行分组以显示在带有部分的列表中

WH4*_*H48 5 core-data nsfetchrequest ios swiftui

我正在构建一个 SwiftUI 应用程序,它显示一个包含相关日期和持续时间的值列表。目前ContentView只是列出所有值(日期升序)。

我想要实现的是,实体按日期分组并放入其相关部分,例如:

当前的

  • 栏目:“日期”
    • 持续时间:50,日期:1 月 1 日
    • 持续时间:48,日期:1 月 1 日
    • 持续时间:21,日期:1 月 2 日
    • 持续时间:57,日期:1 月 3 日

目的

  • 部分:“1 月 1 日”
    • 持续时间:50,日期:1 月 1 日
    • 持续时间:48,日期:1 月 1 日
  • 部分:“1 月 2 日”
    • 持续时间:21,日期:1 月 2 日
  • 部分:“1 月 3 日”
    • 持续时间:57,日期:1 月 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

    }
}
Run Code Online (Sandbox Code Playgroud)