NSAtomicStore et NSAtomicStoreCacheNode, qui a déjà fait un backend CoreData ?
Salut la compagnie,
Je suis en train de jouer avec les NSAtomicStore et NSAtomicStoreCacheNode pour me faire un backend CoreData un peu spécial (en lien avec mon projet ObjectiveREST).
Malgré une doc un peu sommaire j'avance petit à petit, cependant je but sur une chose aujourd'hui.
Je suis dans le lazy loading de mon NSAtomicStoreCacheNode, le moment où je dois charger l'objet réel au premier appel sur le NSManagedObject associé. Le système est assez simple puisqu'il suffit de lui passer un NSDictionary avec les clef / valeur.
J'ai un simple problème, comment dois-je représenter les relations ? Je suis à une couche assez basse de CoreData ici et je n'ai pas accès à un ManagedObjectContext assez haut dans la hiérarchie. Tout ce que j'ai c'est mon NSAtomicStore. Comment dois-je représenter une relation ici ? Je ne vois rien dans la doc à ce propos...
Je suis en train de jouer avec les NSAtomicStore et NSAtomicStoreCacheNode pour me faire un backend CoreData un peu spécial (en lien avec mon projet ObjectiveREST).
Malgré une doc un peu sommaire j'avance petit à petit, cependant je but sur une chose aujourd'hui.
Je suis dans le lazy loading de mon NSAtomicStoreCacheNode, le moment où je dois charger l'objet réel au premier appel sur le NSManagedObject associé. Le système est assez simple puisqu'il suffit de lui passer un NSDictionary avec les clef / valeur.
J'ai un simple problème, comment dois-je représenter les relations ? Je suis à une couche assez basse de CoreData ici et je n'ai pas accès à un ManagedObjectContext assez haut dans la hiérarchie. Tout ce que j'ai c'est mon NSAtomicStore. Comment dois-je représenter une relation ici ? Je ne vois rien dans la doc à ce propos...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
On verra bien si tout ça fini par marcher ^^
J'ai du lazy loading sur mes NSAtomicStoreCacheNode et forcément quand ça charge, mes NSManagedObject ne sont plus à jour, comment faire pour les informer du changement sur le node associé ?
Hypothèse 1 : tu veux prévenir les NSManagedObject que les CacheNodes sont chargés et que donc ils peuvent prendre leurs valeurs.
À mon avis ce n'est pas comme ça que ça marche. Les NSManagedObject interrogent plus ou moins directement les CacheNodes pour avoir les valeurs de leurs propriétés. Au moment où il est interrogé (valueForKey) il va chercher la valeur et la transmet.
Hypothèse 2 : Le store est susceptible de "bouger" indépendamment des ManagedObjects, il faut alors les prévenir le cas échéant. Dans ce cas, je me tournerais vers le NSManagedObjectContext ; c'est lui qui gère la coordination entre les ManagedObjects et le ou les Stores.
Sinon pour répondre aux hypothèse.
Un NSManagedObject est lié à un NSAtomicStoreCacheNode, ce node inclus des mécanisme de lazy loading, c'est ce qui fait qu'un MO affiche fault dans les log tant qu'une clef n'a pas été lu.
Quand le lazy loading se déclanche sur le node, le dictionnaire qui sert de modèle au MO est mis à jour et automatique le MO suit (par KVO j'imagine).
Mon problème venait simplement d'une erreur de lecteur de type qui foutait le bordel.
Et sinon, vis à vis du contexte, quand on travail sur les Atomic Store on est beaucoup trop bas pour remonter au contexte.
Le code est disponible ici https://github.com/ygini/ObjectiveREST
Pour le moment l'écriture ne marche pas mais la lecture oui.