Probleme pour passer une varianble dans une boucle

Babyfoot34Babyfoot34 Membre
13:52 modifié dans API AppKit #1
Je ne comprend pas pourquoi dans ma console ma variable motapasser est toujours null ou pas complete

Je pense que cela vien de ma declaration mais je ne trouve pas. J'ai essayer en declarant i comme int et comme unassigned.

mais cela ne fonctionne pas. Merci pour votre aide
<br /><br />//Chemin de fichier (plist) ou se trouvent les données<br /> path = [[NSBundle mainBundle] pathForResource:@&quot;Data&quot; ofType:@&quot;plist&quot;]; <br /> //Remplissage du tableau 	<br /> dict = [[NSDictionary alloc] initWithContentsOfFile:path];<br /> <br /> for (NSUInteger i = 0; i &lt; [dict count] - 1; i++) {<br />		NSString *motaPasser = (@&quot;Item %lx&quot;, i);<br />		NSLog(@&quot;motapasser : %lx&quot;, motaPasser);<br />		motenFra = [dict objectForKey:motaPasser]; // ATTENTION le 1er c&#39;est l&#39;item 0, le 2e c&#39;est l&#39;item 1<br />		valeurFr = [motenFra valueForKey:@&quot;Mot_Fr&quot;];<br />		<br />		NSLog(@&quot;Mot FR : %@&quot;, valeurFr);<br />		<br />	}<br />


Le resultat dans ma console est toujours <1> au lieu de <Item 1>

Réponses

  • mpergandmpergand Membre
    septembre 2010 modifié #2
    NSString *motaPasser = (@&quot;Item %lx&quot;, i);
    


    C'est quoi ça !

    D'autre part, ton dico ressemble furieusement à  un tableau de dicos, mais tu utilises un dico de dicos, ce qui n'est pas très pratique :)
  • Babyfoot34Babyfoot34 Membre
    13:52 modifié #3
    ERn fait je cherche a creer dans ma boucle une chaine de caractere qui me permetra d'aller chercher dans mon Plist mes données que je veux afficher dans une vues mais une par une.
    En fait c'est une liste de questions a laquelle l'utilisateur doit repondre. Les questions et les reponses sont dans le Plist.
    Je veut creer une boucle pour passer d'une question a l'autre. A chaque passage je souhaite lire mon fichier Plist et afficher les donner. L'utilisateur click une reponse et passe a la question suivante

    Bon ... Je debute et la structure est peut etre pas super,
  • mpergandmpergand Membre
    13:52 modifié #4
    for (NSUInteger i = 0; i &lt; [dict count] - 1; i++) {<br />		NSString *motaPasser =[NSString stringWithFormat: @&quot;Item %lx&quot;, i];<br />		NSLog(@&quot;motapasser : %@&quot;, motaPasser);<br />		motenFra = [dict objectForKey:motaPasser]; // ATTENTION le 1er c&#39;est l&#39;item 0, le 2e c&#39;est l&#39;item 1<br />		valeurFr = [motenFra valueForKey:@&quot;Mot_Fr&quot;];<br />		<br />		NSLog(@&quot;Mot FR : %@&quot;, valeurFr);<br />		<br />	}
    


    Je persiste à  considérer qu'un NSArray de dicos serait plus adapté, puisque tu crées toi même des index (item0, item1, ...)
  • AliGatorAliGator Membre, Modérateur
    13:52 modifié #5
    +1 pour un NS(Mutable)Array de NSDictionary.
    Pourquoi avoir un dictionnaire indexé avec des clés genre "Item 0", "Item 1", "Item 2", "Item 3", ... alors qu'un NSArray (donc un tableau) est fait pour ça et sait directement te retourner l'élément à  l'index N ? En plus ça optimiserait ton code (surtout si à  terme tu veux faire beaucoup d'accès à  ton tableau et si tu veux profiter des avantages de NSFastEnumeration)
  • Babyfoot34Babyfoot34 Membre
    13:52 modifié #6
    En fait vous êtes entrain de me dire qu'au lieu d'utiliser un dictionnaire je devrai utiliser un tableau, mais avec mon plist je n'arrive pas a récupérer mes donnees. je vous donne un extrait du plist :



  • Babyfoot34Babyfoot34 Membre
    13:52 modifié #7
    Vous pensez que le Plist serait plus rapide dans cette forme avec un Array qui chargerait des dictionaires ?
    [img][/img]
  • AliGatorAliGator Membre, Modérateur
    13:52 modifié #8
    Je pense pas, j'en suis sûr, c'est un fait.
    Par contre pourquoi encore mettre "Item1", "Item2", ... "Item8" comme clés pour chacun de tes dictionnaires ? des clés plus parlentes comme "soundFile", "fr", "en", ...?
  • laudemalaudema Membre
    13:52 modifié #9
    Et tu n'as pas répondu à 
    dans 1285688479:

    NSString *motaPasser = (@&quot;Item %lx&quot;, i);
    


    C'est quoi ça !

    J'ai dans l'idée qu'une fois que tu auras construit et stocké un beau tableau de dictionnaires dans ta plist  tu devrais t'intéresser aussi à  la première partie de la question que tu as laissée tomber alors que la vitesse n'était pas ton souci premier..
  • Babyfoot34Babyfoot34 Membre
    13:52 modifié #10
    Merci pour vos reponses.

    Que veux tu dire laudema ? Je devrai tous faire avec des tableaux ?

    J'ai repris l'idée d'Aligator qui apparement fonctionne bien, mais il est vrai que je dois avoir 100  dictionnaire dans mon plist et je ne sais pas encor comment cela va se passer avec autant de donnés. Voila commenr j'ai corrigé mon code
    <br />//Chemin de fichier (plist) ou se trouvent les données<br />	path = [[NSBundle mainBundle] pathForResource:@&quot;Data&quot; ofType:@&quot;plist&quot;]; <br />	tabloData = [[NSArray alloc] initWithContentsOfFile:path];//Remplissage du tableau<br /><br />for(dict in tabloData) {<br />	NSLog(@&quot;MotFr : %@&nbsp; MotRu : %@&quot; , [dict objectForKey:@&quot;Mot_Fr&quot;], [dict objectForKey:@&quot;Mot_Ru&quot;]);<br />}<br /><br />
    



  • laudemalaudema Membre
    13:52 modifié #11
    dans 1285743050:

    Que veux tu dire laudema ? Je devrai tous faire avec des tableaux ?

    Que ton premier problème c'est de corriger tes erreurs et warnings si tu veux te voir progresser. De débarrasser ton code de ses erreurs avant de voir comment tu vas l'optimiser. Tu réfléchis à  la manière dont tu vas utiliser des outils sans avoir encore compris le langage qui les manipule. Enfin c'est ce que j'en ressens.
    Accessoirement que ta manière de créer une chaà®ne avec arguments à la printf n'est guère convaincante.

    dans 1285743050:

    J'ai repris l'idée d'Aligator qui apparement fonctionne bien, mais il est vrai que je dois avoir 100  dictionnaire dans mon plist et je ne sais pas encor comment cela va se passer avec autant de donnés. Voila commenr j'ai corrigé mon code


    Bien sûr qu'elle fonctionne l'idée d'Ali, j'ose pas imaginer combien de tableaux et dictionnaires il aura créé sur des disques durs à  lui tout seul, et il est pas le seul à  le faire comme ça ;)

    <br />//Chemin de fichier (plist) ou se trouvent les données<br />	path = [[NSBundle mainBundle] pathForResource:@&quot;Data&quot; ofType:@&quot;plist&quot;]; <br />	tabloData = [[NSArray alloc] initWithContentsOfFile:path];//Remplissage du tableau<br /><br />for(dict in tabloData) {<br />	NSLog(@&quot;MotFr : %@&nbsp; MotRu : %@&quot; , [dict objectForKey:@&quot;Mot_Fr&quot;], [dict objectForKey:@&quot;Mot_Ru&quot;]);<br />}<br />
    


    Il sort d'où ton "dict" ?
    Xcode est malin mais pas plus que ça, pas certain qu'il aille jusqu'à  regarder ce que tu en fais pour deviner comment il devrait le typer, en plus là  c'est plus Xcode mais gcc ou LLVM qui prennent la main. ça m'étonnerais que tu n'aies pas au moins un warning de leur part pour te signaler ça.
    Pour le reste 100 dictionnaires de quelques clefs dont une pourrait avoir jusque 8 lignes n'est pas du tout un problème de vitesse perceptible à  l'utilisateur.
    Mais pour toi le voir il faudrait que tu compiles sans erreur (ni warnings probablement)
Connectez-vous ou Inscrivez-vous pour répondre.