[CORE DATA] Validation des données avant sauvegarde

regattaregatta Membre
09:58 modifié dans API AppKit #1
Bonjour à  tous,

Voici un petit problème  :-\\

Core data ne gérant pas de clés, il faut donc gérer les contrôles de doublons (ou autres) par code.

j'ai créé un exemple avec une entité et 2 attributs de type string et fait généré le code de mon entité par xcode en faisant :
New File/managed object class et en validant la génération du code des ascesseurs et des méthodes de validation (validate<nomAttribut>).

J'ai créé l'interface standard générée par XCODE de saisie des données de mon entité et j'ai placé des points d'arrêt dans le code généré par XCODE :
  • dans la méthode (IBAction) saveAction:(id)sender généré par xcode,
  • dans les méthodes de validations.


En saisissant des données et en sauvant par le menu Fichier/Enregistrer, je remarque que la méthode de sauvegarde est appelée avant les méthodes de validation  B)

La table est sauvegardée avant que l'on puisse vérifier les données et dire si elles sont correctes !

J'ai surement raté quelquechose

Comment peut-on vérifier les données avant la sauvegarde ?

Réponses

  • regattaregatta Membre
    09:58 modifié #2
    En fait, le contrôle est bien fait dans le bon sens.

    Mon erreur est d'avoir cru lire directement dans la base en regardant le contenu du NSManagedObject.
    :(

    Avez vous une méthode pour vérifier que la donnée n'est pas déjà  sauvegardée dans la base et donc de faire un contrôle de clé ?
  • regattaregatta Membre
    09:58 modifié #3
    Devant l'enthousiasme général succité par ma question, je vais me répondre à  moi même.  ;)

    J'ai trouvé une solution qui peut intéresser, mais si vous avez mieux je suis preneur !

    BOOL temp = [[anObject objectID] isTemporaryID];
    permet de savoir si les objets de MSManagedObject sont temporaires ou non.

    On peut donc faire le tri entre ce qui est uniquement en mémoire, donc à  valider et ce qui est déjà  sauvegardé dans la base  ::)
  • regattaregatta Membre
    09:58 modifié #4
    Bonjour,

    pour ceux que le sujet intéresse, une question sur le même sujet est sur le forum apple aujourd'hui
    avec une réponse ( ma suggestion était à  coté de la plaque  :(  )

    Voici le lien : http://lists.apple.com/archives/cocoa-dev/2006/Mar/msg00703.html

    C'est en anglais évidemment !
     
Connectez-vous ou Inscrivez-vous pour répondre.