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.
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()
}