[CORE DATA] Validation des données avant sauvegarde
regatta
Membre
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 :
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
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 ?
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
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 ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
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é ?
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 ::)
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 !