2 votes

Obtenir le numéro d'index de CoreData à List dans SwiftUI

J'essaie d'obtenir un numéro d'index de Coredata à la liste.

Voici mon code actuel

struct ContentView: View {

    @Environment(\.managedObjectContext) var managedObjectContext
    @FetchRequest(fetchRequest: ToDoItem.getAllToDoItems()) var toDoItems:FetchedResults<ToDoItem>

    @State private var newTask = ""

    var body: some View {
        VStack{
            HStack{
                TextField("new Task", text: $newTask)

                Button(action:{

                //saving event title
                let toDoItem = ToDoItem(context: self.managedObjectContext)
                toDoItem.title = self.newTask

                do {
                    try self.managedObjectContext.save()
                } catch {
                    print(error)
                }
                    self.newTask = ""

                })
                {
                    Text("Add")
                }
            }

            List{

                ForEach(self.toDoItems) { toDoItem in
                    HStack{
                    Text("\(toDoItem.title!)")

                    }.onTapGesture {

                        print("Print current Index")
                    }
                }
                }
        }
    }
}

Voici ce que j'ai essayé :

J'ai essayé d'utiliser des solutions à ici mais je reçois toujours cette erreur

Cannot convert value of type 'FetchedResults<ToDoItem>' to expected argument type 'Range<Int>'

J'ai donc essayé d'utiliser une instruction en boucle pour vérifier tous les éléments de CoreData jusqu'à ce que le même nom soit trouvé, mais le problème est que l'utilisateur peut avoir plusieurs éléments de CoreData avec le même nom.

Y aurait-il un moyen d'obtenir le numéro d'index des CoreData à List ?

4voto

Asperi Points 123157

Voici une approche possible

ForEach(self.toDoItems.indices, id: \.self) { index in
    HStack{
        Text("\(toDoItems[index].title!)")

    }.onTapGesture {

        print("Print current Index: \(index)")
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X