afincremental store delete entity
Bonjour,
J'ai un problème avec mon application, après avoir récupérer des données via json et incrementalStore , quand je met à jour le json, cela marche (changement de titre d'une news) mais quand j'efface celle ci de mo json il ne prend pas en compte le delete et donc laisse la news dans ma tableview.
Les données du json sont enregistré sous coredata.
Avez vous deja eu ce problème et comment le résoudre?
merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Bonjour,
Est-ce que tu peux nous donner l'action que tu fais dans ton code au niveau de la suppression de tes données ? Cela nous faciliterai la tâche pour t'aider sur ce sujet.
A+ ! :-)
Mauvaise approche du problème.
Des outils comme AFIncrementalStore sont particulièrement complexe à utiliser correctement. C'est vendu comme des truc magique qui font tout mais si on ne comprend pas exactement comment fonctionne CoreData, c'est impossible de le gérer comme il faut.
Entre autre il est impératif de comprendre que dans un code de synchro, on ne fait que charger des résultat. Retirer une entrée de ton JSON ne veut en aucun cas dire qu'elle n'existe plus ! C'est la base de la synchro, c'est juste que c'est trop vieux pour que ton WS l'envois.
C'est à toi de faire ton nettoyage coté client. T'as plein de manière de faire ça et ça m'étonnerait que AFIncrementalStore le gère pour toi car c'est propre à l'usage.
Pour des news, le plus simple est de gérer coté client un nettoyage périodique des vieux articles.
Sinon ça veut dire en server side gérer ce que l'on nomme des "tombstone object" (des pierres tombales). À savoir que lorsque le client va chercher à mettre a jour l'article via son UUID sur le WS, ce dernier renverra une info comme quoi l'objet à bien existé mais est aujourd'hui supprimé.
oui c'est assez complexe à utiliser mais sur le papier cela paraissait très bien.
Tout marche bien sauf le delete.
Qu'utilisez vous comme méthode pour parser du json et l'enregistrer sous coredata?
sinon voici le fichier de incrementalstore:
en fait j'essai d'utiliser afIncrementalStore (de matt thompson) avec AFNetwotking 2 mais impossible de faire fonctionner le delete.
Sur github malheureusement les fichiers ne sont plus jour car il utilise encore AFHTTPClient.h.
Si certain d'entre vous utilise AFIncrementalStore..
L'outil importe peut, REST Kit, AFIncrementalStore, du code perso, peut importe.
L'important c'est le process. Aucun outil ne te permettra de choisir le bon process car c'est fonction de l'usage.
À toi de voir le CdC pour savoir s'il faut gérer une date de péremption coté client ou un flag de delete coté serveur. Dans tous les cas ce ne sera pas l'outil qui le fera pour toi.
Ce que l'outil peut faire c'est l'inverse, lorsqu'un delete local est fait, avoir un callback pour faire le delete associé coté serveur.
Mais dans ce qui t'intéresse là c'est à toi de te définir un protocole pour savoir comment supprimer les entrées du serveur vers le client.