[Resolu] - for ( uneLigne * vLigne in vIndexSet ) si c'est possible comment ?

GercofisGercofis Membre
janvier 2009 modifié dans API AppKit #1
Au risque de me faire bâcher  >:)

si c'est possible comment ?

NSIndexSet * vIndexSet = [tableView selectedRowIndexes];<br /><br />for ( uneLigne * vLigne in vIndexSet ) <br />{<br />&nbsp; &nbsp; &nbsp; // ... Traitement....<br />}<br />

:)beta: ,  :why?:

Réponses

  • AliGatorAliGator Membre, Modérateur
    09:01 modifié #2
    42.

    Tu ne comprends pas la réponse ? C'est normal, on ne comprend pas la question...;-)
  • GercofisGercofis Membre
    09:01 modifié #3
    dans 1231352798:

    NSIndexSet * vIndexSet = [tableView selectedRowIndexes];<br />for ( uneLigne * vLigne in vIndexSet ) <br />{<br />&nbsp; &nbsp; &nbsp; // ... Traitement....<br />}<br />
    

    ça me paraissait simple comme ça, explication...

    vIndexSet est l'ensemble des lignes sélectionnées ( dans la tableView )
    uneLigne est la classe du modèle ( données ) présenté par  tableView
    la boucle for doit faire un traitement sur chaque ligne
  • AliGatorAliGator Membre, Modérateur
    09:01 modifié #4
    Ah ben tu vois c'est déjà  plus clair comme ça ;)
    - Le fait que tu aies mis "uneLigne" avec une minuscule, ne respectant pas les standards et conventions de nommage classique à  la Apple, fait que j'ai lu ça comme "uneLigne" étant une variable et non le nom d'une classe.
    - Le fait que tu aies en plus mis un espace autour de ton "*" fait que j'ai du coup lu ça comme un signe "multiplié" et non comme la désignation de pointeur. J'ai lu "uneLigne multiplié par vLigne" et j'ai donc pas capté, d'autant que tu n'as pas précisé ce qu'était ce "uneLigne".
    - En plus, vIndexSet est un NSIndexSet, donc un "set" contenant des indexes (des entiers), donc si tu boucles sur les indees, tu obtiendras des entiers... je ne vois pas trop ce que "uneLigne * vLigne" faisait là 

    Maintenant que j'ai à  peu près compris ce que tu veux, il faut encore que tu nous en dises plus sur la représentation de ton modèle. Par exemple ton modèle contenant tes instances de "UneLigne" est représenté par un NSArray, et que tu veux les éléments de ce NSArray correspondant aux indexes de vIndexSet, pourquoi ne pas faire [tt]NSArray* subArray = [linesArray objectsAtIndexes:vIndexSet];[/tt] et simplement boucler sur tous les éléments de ce subArray (qui ne contiendra donc que les éléments correspondant aux indexes du set) ? Tout est dans la doc de NSArray de ce côté... mais si c'est pas un NSArray mais autre chose qui te sert de modèle, il nous faut en savoir plus...
  • NoNo Membre
    09:01 modifié #5
    Pour pouvoir utiliser la syntaxe for (... in ...), la classe conteneur doit se conformer au protocole NSFastEnumeration.
    Comme d'après la doc NSIndexSet n'utilise pas ce protocole, alors le for(... in...) n'est pas utilisable.
    Et cela se justifie comme l'a expliqué Aligator dans le post précédent : NSIndexSet est une classe conteneur, pas d'objet mais d'entiers.
  • schlumschlum Membre
    09:01 modifié #6
    dans 1231353697:

    42.

    Tu ne comprends pas la réponse ? C'est normal, on ne comprend pas la question...;-)


    Mince, moi j'ai compris la réponse...  :)
  • AntilogAntilog Membre
    09:01 modifié #7
    Moi aussi:
    c'est 2*21

    et aussi
    90/2 - 3

    <3
  • GercofisGercofis Membre
    janvier 2009 modifié #8
    dans 1231352798:

    Au risque de me faire bâcher  >:)

    Qu'est-ce que j'avais dis, mais pour le coup je rajoute la couche celle que je tiens  >:) , j'avais essayé tout ça, mais zappé les 's' des méthodes... J'avais opté pour le plus court, le plus parlant, toutes mes excuses pour l'erreur sur la majuscule...
    Pour le coup ça clarifie dans ma tête  B) l'utilisation de la boucle (for xxx in xxx) et la classe NSIndexSet donc merci...
    Pour ceux qui lirait ce sujet pas la suite:

    //UneLigne.h
    @interface UneLigne : NSObject
    {
    NSString * cellule1 :
    //.....

    //Utilisation for ( xxx in xxx ) et NSIndexSet
             NSIndexSet * rows = [tableView selectedRowIndexes];
    NSArray * lignes = [lesLignes objectsAtIndexes:rows];// lesLignes = son .h -> NSMutableArray * lesLignes ;

    for(UneLigne *vLigne  in lignes )
    {
    NSLog(@la ligne %@",[vLigne valueForKey: @cellule1]);
    [vLigne setValue:@0.0 forKey:@cellule1];
    }

    [tableView reloadData];

    J'ai changé les noms pour plus de clarté, en tous cas chez moi ça marche nickel ....
  • schlumschlum Membre
    09:01 modifié #9
    dans 1231404545:

    Moi aussi:
    c'est 2*21

    et aussi
    90/2 - 3

    <3 <br />


    :fouf):
    C'est surtout la réponse à  la grande question sur la vie, l'univers et le reste  :o
  • Philippe49Philippe49 Membre
    janvier 2009 modifié #10
    Moi 42 cela me fait penser à  la blague de Jamel

    Christian et Adriana Karembeu ont un fils ? Comment s'appelle-t-il ?
    ben : 6 fois 7
Connectez-vous ou Inscrivez-vous pour répondre.