J’ai utilisé le même code que @mbritto pour mettre à jour le toggle d’une tache pensant que ça marcherais de même pour une suppression mais pas du tout …
Bonjour,
Je suis un peu dans le même cas que toi et j’essaye de me faire une petite application perso un peu plus compliquée que l’exemple de Maxime pour me faire la main.
Je rencontre quelques difficultés mais par contre j’avais réussi à faire cette suppression.
Au vu de ton code, j’ai l’impression que la suppression dans le tableau local fonctionne, mais que c’est la suppression dans la BDD CoreData qui ne fonctionne pas. C’est ça?
A+
Pascal
Il est bizarre ton code ! Tu effaces l’objet du tableau à un index donné et ENSUITE tu demandes à CoreData de mettre à jour l’objet avec le même index.
La solution était si évidente, j’aurais du me douter de l’existence d’une option .delete dans coreData.
Un tout grand merci !
Merci aussi à toi @Draken l’option .filter marche aussi dans ce que j’en ai lu sur internet (je ne sais juste pas encore l’utiliser je dois revoir la base de Swift je pense).
Bonjour, je relance le sujet légèrement différemment:
– J’ai ma struct :
struct Cellule: Identifiable {
var id = UUID()
let valeur:String
let date:String
}
– J’utilise une liste pour afficher mes éléments d’un array :
List {
ForEach(cellManager.arrayCellule) { cell in
HStack {
Text("(cell.valeur)" + " €")
.font(.title)
.baselineOffset(20.0)
.padding()
Spacer()
Text("(cell.date)")
.font(.subheadline)
.baselineOffset(0)
.padding()
}
} .onDelete(perform: { indexSet in
** cellManager.arrayCellule.remove(atOffsets: indexSet)**
// C'est ici que je bug
})
}
Le problème c’est que lorsque je supprimer une ligne de mon foreach avec le .onDelete, je supprime un index de mon array, mais je n’arrive pas a faire le lien avec coreData.
Je pars du principe que je dois trouver une Cellule() à partir du même index mais la c’est le drame je n’y arrive pas.
Si quelqu’un aurait une solution à me proposer je serai preneur
Merci à vous.
Salut, c’est ce que je voulais faire mais non aucune idée de comment insérer le code proprement de manière à ce que d’autres personnes puissent y toucher…
Voila les captures,
C’est au niveau du .onDelete qui est dans ma liste que j’ajoute ma fonction du manager, et où j’aimerai réussir a récupérer mon objet pour le retirer de CoreData
et sinon au contraire j’aimerai bien savoir insérer le code proprement, pas de soucis que l’on puisse toucher à mon code au contraire
Malheureusement pour régler ce problème je ne sais pas t’aider …
J’ai été confronté à ce genre de problème et j’ai du faire autrement pour supprimer une tache (mais sans le .onDelete)
Ceci dit je te redirige vers cette vidéo qui utilise CoreData et le .onDelete mais c’est une méthode très différente de ce quoi nous avons appris dans le cour de Maxime à toi de voir ce que tu préfères utiliser
Bonjour,
Je n’ai pas le temps de faire une réponse détaillée, mais en gros voici comment j’ai procédé pour réaliser ça:
j’ai un id (UUID) qui permet de faire le lien entre le tableau local et l’objet dans coreData
quand je veux supprimer un élément du tableau, je fais un fetch avec l’id dans coreData pour récupérer l’objet coreData et je fais self.context.delete (objetCD)
je fais le remove dans le tableau local.
Si tu veux plus de détails, demande moi et je t’enverrai du code.
Bonne soirée
Pascal
Bonjour à nouveau. Je viens de réaliser que je n’ai pas vu une partie de ton code qui fait exactement ce que je te disais. Du coup ce que j’ai dit ne sert à rien. Par contre chez moi ça fonctionne. Pas chez toi?? Tu as un message d’erreur ou un log ?