Condition sur un boolean et KVC (Core Data)
cargo
Membre
<br />if([[self valueForKey:@"myString"] isEqualToString:@"toto"] && [self valueForKey:@"myChoice"]==YES)
La première condition sur la string fonctionne mais la deuxième sur le boolean ne marche pas.
J'ai essayé isEqualToString:"@YES" , isEqualToValue: 1 , etc , etc , rien ne marche.
Impossible de trouver quoi que ce soit dans la doc Apple.
Help...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Donc pour te faire un résumé, tous les types qui sont des nombres (float, BOOL, double,....) sont encapsulés dans un NSNumber si tu tentes d'y accéder par KVC. Donc le mieux est de faire [[self valueForKey:@myChoice] boolValue] == YES.
Tu ne me déçois pas, c'est exactement là que je cherchais dans la doc (entre autres)... Je ne comprenais pas comment je pouvait me servir des accessors ce tableau concrètement.
En fait j'aurais du dire "Impossible de comprendre comment utiliser la doc"Â
Je sais qu'un bool est encapsulé dans un NSNumber mais quand je faisais isEqualTo: 1 , ça ne marchait pas, c'est ça qui m'a perturbé aussi.
En fait faut le décapsuler pour y accéder si je comprends bienÂ
J'ajouterais que le KVC simplifie les choses mais c'est pour moi quelque chose de difficile à conceptualiser, il doit me manquer une pièce du puzzle. Quelque chose comme "qu'est ce qu'il y avait avant le KVC, qu'est ce que remplace le KVC, comment ferait-on sans le KVC"...
Leçon n°1 de "comment se servir de la doc": regarder les types d'arguments. Cette méthode prend comme argument un id et non un int, ce qui veut dire que tu dois fournir un objet et rien d'autre. Dans le cas présent tu dois fournir un objet qui encapsule un int, donc NSNumber est le choix qui s'impose.
Si je me souviens bien, tu as commencé direct avec CoreData non? Le problème que tu as là n'est pas tellement qu'il manque quelque chose dans la doc, mais que la doc suppose un certain ordre d'apprentissage, et que tu as grillé des étapes dans ce schéma. Donc le mieux que tu puisses faire est de revoir ces bases. Comme en plus tu as déjà une certaine expérience, ça ira beaucoup plus vite que si tu partais de 0, et surtout tu verras tout de suite des applications à certains concepts qui sembleraient obscurs à des débutants complets.
Bon, je te le concède, il est dommage que l'ordre préconisé par la doc est plutôt déterminé par l'ordre d'apparition des différentes technos, plutôt que l'ordre d'apprentissage "logique". Mais même si l'ordre de la doc devait être "remanié", le KVC et tout ce qui en a dérivé ne devrait pas figurer au début.
Une bonne page pour commencer est:
http://developer.apple.com/referencelibrary/GettingStarted/GS_Cocoa/index.html
(tu remarqueras que le KVC n'y est même pas cité)
Core Data ça m'aide plutôt moi en fait, cette approche type "base de données" m'est familière.
Je commence avec une appli Core Data mais j'ai lu toute la doc Apple de base déjà , plus les tutoriaux d'applis basiques chez Apple , Project Omega et ici, plus les threads des forums, plus les mailings lists apple developpers, plus les sites cocoadev et compagnie, etc etc...
Beaucoup de choses à mémoriser d'un coup ! Ca mérite d'être re-re-re-relu en fait, au fur et à mesure que l'on y voit plus clair.
Autant pour les bindings par exemple ça va, je vois comment fonctionne un NSArray à la base, comment remplir une tableView sans bindings etc. Mais le KVC, c'est pas limpide.
En fait la doc explique bien comment fonctionnent les choses, mais elle n'explique pas toujours clairement comment elles sont structurées entre elles, comment elles s'intègrent dans un ensemble, leur génèse, leur raison d'être, etc ...