Obtenir les données par une clé mais sans enumerator

muqaddarmuqaddar Administrateur
13:15 modifié dans API AppKit #1
Salut la compagnie,

Je cherche à  récupérer toutes les données des clés d'un array qui contient donc des dictionnaires de clés, en lui envoyant l'id du dico concerné, mais sans enumérateur.

Comme vous avez dû rien comprendre à  ma phrase, un petit exemple :
Mon array :

<array>
<dict>
<key>dicoId</key>
<integer>1</integer>
<key>paysId</key>
<string>fra</string>
</dict>
<dict>
<key>dicoId</key>
<string>4</string>
<key>paysId</key>
<string>fra</string>
</dict>
<dict>
<key>dicoId</key>
<string>3</string>
<key>paysId</key>
<string>alm</string>
</dict>
</array>

Ici, je voudrais récupérer dans une fonction toutes les données du dico à  qui j'envoie la valeur dicoId qui vaut 1. Donc qu'il me renvoie le paysId "fra".
Mais y a t-il un moyen d'avoir ces données, sans faire un enumerator sur l'array et balayer le tableau pour voir si dicoId est bien égal à  "1" ?
:o

Réponses

  • 13:15 modifié #2
    Pas à  ma connaissance.

    Mais si tu dois faire plusieurs fois la manip, rien n'empêche de faire une catégorie, ou faire une méthode dans ton contrôleur...
  • muqaddarmuqaddar Administrateur
    13:15 modifié #3
    Oui, t'inquiète c'est déjà  dans une méthode.
    Merci.
    Arf en SQL, un simple select et ça serait bon. vivement Tiger et le sql intégré.
  • cbrandtcbrandt Membre
    13:15 modifié #4
    sinon au lieu de stocker tes dictionnaires dans un array, tu pourrais les stocker dans un dictionnaire, avec la valeur du dicoId comme clé pour chaque item:
    (éventuellement en gardant la clé dicoId dans chaque item)

    <dict>

    <key>1</key>
    <dict>
    <key>dicoId</key>
    <integer>1</integer>
    <key>paysId</key>
    <string>fra</string>
    </dict>

    <key>2</key>
    <dict>
    <key>dicoId</key>
    <string>4</string>
    <key>paysId</key>
    <string>fra</string>
    </dict>

    <key>3</key>
    <dict>
    <key>dicoId</key>
    <string>3</string>
    <key>paysId</key>
    <string>alm</string>
    </dict>

    </dict>

    et si tu utilisais un array parce que tu affiches dans un tableview, tu peux récupérer le n-ième élément comme suit:

    <br />int n;<br />id cle;<br />id obj;<br />NSDictionary *monDico;<br />...<br />cle = [[monDico allKeys] objectAtIndex: n];<br />obj = [monDico objectForKey: cle];<br />
    


    il serait d'ailleurs mieux de trier les clés car l'ordre des éléments renvoyés par allKeys peut changer en fonction du contenu du dico:

    <br />int n;<br />id cle;<br />id obj;<br />NSDictionary *monDico;<br />...<br />cle = [[[monDico allKeys] sortedArrayUsingSelector: @selector (compare:)] objectAtIndex: n];<br />obj = [monDico objectForKey: cle];<br />
    
  • muqaddarmuqaddar Administrateur
    13:15 modifié #5
    merci cBrandt.
    Mais j'ai déjà  réalisé une grosse partie de l'appli avec ma structure précédente , array de dicos... Et si je dois tout refaire... :(
Connectez-vous ou Inscrivez-vous pour répondre.