Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SwiftUI & CoreData - ordered list

I am trying to make an ordered list in SwiftUI using CoreData records. How to print running numbers in such list?

In the following example I have one entity named SomeEntity with a String attribute named title.

import SwiftUI
struct ContentView: View {

   var fetchRequest: FetchRequest<SomeEntity>
   var items: FetchedResults<SomeEntity> { fetchRequest.wrappedValue }

   var body: some View {
      NavigationView {
         List {

            ForEach(items, id: \.self) {item in

            NavigationLink(destination: ItemDetailsView(item: item)) {

                HStack {
                    Text("99")
                    // How to print running number instead of "99" in this ordered list of CoreData records?
                    // I was thinking about something like this:
                    // Text(items.id) - but this doesn't work. Is there something similar?
                        .multilineTextAlignment(.center)
                        .frame(width: 60)
                    Text(item.title!)
               }
           }
           }


         }
      }
   }
}
like image 483
mallow Avatar asked Oct 14 '25 14:10

mallow


1 Answers

Probably you need something like the following

struct ContentView: View {

   var fetchRequest: FetchRequest<SomeEntity>
   var items: FetchedResults<SomeEntity> { fetchRequest.wrappedValue }

   var body: some View {
      NavigationView {
         List {

            ForEach(Array(items.enumerated()), id: \.element) {(i, item) in

            NavigationLink(destination: ItemDetailsView(item: item)) {

                HStack {
                    Text("\(i + 1)")
                        .multilineTextAlignment(.center)
                        .frame(width: 60)
                    Text(item.title!)
               }
           }
           }
         }
      }
   }
}
like image 123
Asperi Avatar answered Oct 17 '25 08:10

Asperi