Fonction "userTappedTask"

Bonjour à tous,

Je me lance dans le cours CoreData. A cette occasion Maxime a crée une petite app de gestion de données.
Tout me semble plutôt clair à l’exception d’une chose, la toute dernière fonction : userTappedTask

Quelqu’un saurait-il m’expliquer la syntaxe rattachée à cette fonction ? J’avoue ne pas la comprendre.

Merci par avance

Hello,

Tu peux partager la fonction ?

Hello,

Oui, effectivement mon message était pour le moins succinct. Avec la fonction, c’est quand même beaucoup plus simple :

if let taskIndex = taskList. firstIndex(where: { (t) → Bool in t.id == task.id }) {
taskList[taskIndex].isDone.togg}e()

Marci par avance.

procedons étape par étape :

1ere partie : if let taskIndex = taskList.firstIndex(where: { (t) → Bool in t.id == task.id }):

  • firstIndex(where:): Cette fonction recherche l’index du premier élément qui satisfait une certaine condition dans le tableau taskList.
  • where: { (t) → Bool in t.id == task.id }: Ce bloc de code est une closure qui prend un paramètre t (qui est un élément du tableau) et retourne un booléen. Le booléen sera true si t.id est égal à task.id.
  • if let taskIndex =: La valeur retournée est optionnelle. Si un élément est trouvé, la valeur non optionnelle est assignée à taskIndex.

2nde partie : taskList[taskIndex].isDone.toggle():

  • taskList[taskIndex].isDone: On accède à l’attribut isDone de l’objet à l’index taskIndex dans taskList.
  • toggle(): Cette méthode inverse la valeur booléenne de isDone.

En résumé, le codecherche l’index de la première tâche dans taskList ayant le même id que task.id. Si une tâche est trouvée, il inverse la valeur de son attribut isDone.

Je te mets un version plus compréhensible de ton code :

if let taskIndex = taskList.firstIndex(where: { $0.id == task.id }) {
    taskList[taskIndex].isDone.toggle()
}
1 « J'aime »