Meilleure méthode pour avoir une clef en "auto-increment" avec CoreData ?
yoann
Membre
Bonsoir tout le monde,
Je suis entrain de me replonger dans CoreData après une petite année de séparation due à l'iPhone et j'aurais besoin pour un des mes ManagedObject d'avoir une clef de type index, qui se met d'elle même à valeurMax+1 lorsqu'une entity est créée.
Mon idée de base était de me placer dans le awakeFromInsert, de faire une requête sur toutes les entity de ce type et ensuite sur le NSArray résultant faire un valueForKeyPath:@"@max.indexValue" pour obtenir la valeur max actuelle.
Cependant ça ne marche pas comme ça, je récupère un message dans la console disant not key value coding-compliant for the key max.indexValue (sans le @ étrangement). Pourtant si j'affiche le résultat du keyPath indexValue directement j'obtiens bien un tableau avec tout mes index existant !
Avez vous une idée d'où peut venir ce problème ?
D'autre part (et surtout !) avez vous une meilleur solutions que celle-ci ? Charger tous les objet pour les filtrer ensuite ne me plais pas trop, mais je n'ai pas trouvé de méthode pour filtrer et retenir tous les objets ayant la plus grosse valeur sur tel clef avec les NSPredicate
Merci d'avance !
Je suis entrain de me replonger dans CoreData après une petite année de séparation due à l'iPhone et j'aurais besoin pour un des mes ManagedObject d'avoir une clef de type index, qui se met d'elle même à valeurMax+1 lorsqu'une entity est créée.
Mon idée de base était de me placer dans le awakeFromInsert, de faire une requête sur toutes les entity de ce type et ensuite sur le NSArray résultant faire un valueForKeyPath:@"@max.indexValue" pour obtenir la valeur max actuelle.
Cependant ça ne marche pas comme ça, je récupère un message dans la console disant not key value coding-compliant for the key max.indexValue (sans le @ étrangement). Pourtant si j'affiche le résultat du keyPath indexValue directement j'obtiens bien un tableau avec tout mes index existant !
Avez vous une idée d'où peut venir ce problème ?
D'autre part (et surtout !) avez vous une meilleur solutions que celle-ci ? Charger tous les objet pour les filtrer ensuite ne me plais pas trop, mais je n'ai pas trouvé de méthode pour filtrer et retenir tous les objets ayant la plus grosse valeur sur tel clef avec les NSPredicate
Merci d'avance !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Il suffit de faire +1 ou -1 dessus à chaque ajout/suppression, non ?
Cependant c'est une méthode bien pour optimiser, mais il me faut quand même récupérer la bonne valeur lors du lancement de l'application, ce qui me ramène à mon problème de base du not key value coding-compliant for the key max.indexValue
A vérifier
Dans les exemples d'Apple tu as un projet CoreData intitulé "iClass" qui propose un exemple d'implementation de générateur de cle de type index (IDgenerator).
Y jeter un oeuil d'orientera peut-être...
Merci bien !