Tableaux, NSNumber, int, balayage...
muqaddar
Administrateur
Salut la compagnie,
J'ai plein de petites questions. ;D
J'ai balayé un tableau de cette façon :
Tout ce petit monde marche.
En regardant plus haut ds mon code, j'ai un NSEnumerator de cette façon :
La principale différence, c'est bien s?r la méthode nextObject pour balayer l'énumérateur mais aussi le type NSnumber choisi pour l'index de l'énumérateur, alors que moi j'ai pris du int pour l'index de mon tableau.
Pourquoi cette différence ? Pourquoi pas un int pour l'index de l'énumérateur ?
Autre question : ma façon de faire pour mettre à jour une colonne de ma tableView avec l'identifier sur une multiselection est elle la meilleure ? Y a t-il une méthode qui évite un while, puisque mon tableau (peopleToRemove) a été construit avec l'énumérateur auparavant, et que je le repasse dans un while, alors que par exemple cette méthode :
[employees removeObjectsInArray:peopleToRemove];
permet de supprimer tous les enregistrements de peopleToRemove.
Suis-je clair ? :P
J'ai plein de petites questions. ;D
J'ai balayé un tableau de cette façon :
<br /> int indexAug;<br /> Person *currentAug;<br /> <br /> for (indexAug=0; indexAug<[peopleToRemove count]; indexAug++) {<br /> currentAug = [peopleToRemove objectAtIndex:indexAug];<br /> [currentAug takeValue:@"0" forKey:@"expectedRaise"];<br /> [self updateChangeCount:NSChangeDone];<br /> [self updateUI]; <br /> }<br />
Tout ce petit monde marche.
En regardant plus haut ds mon code, j'ai un NSEnumerator de cette façon :
<br /> Person *currentPerson;<br /> NSNumber *index;<br /> int choice;<br /> <br /> //créer un tableau modifiable libéré automatiquement<br /> NSMutableArray *peopleToRemove = [NSMutableArray array];<br /> <br /> //obtenir un enumerateur pour les lignes selectionnes<br /> NSEnumerator *e = [tableView selectedRowEnumerator];<br /> <br /> while (index = [e nextObject]) {<br /> currentPerson = [employees objectAtIndex:[index intValue]];<br /> [peopleToRemove addObject:currentPerson];<br /> }<br />
La principale différence, c'est bien s?r la méthode nextObject pour balayer l'énumérateur mais aussi le type NSnumber choisi pour l'index de l'énumérateur, alors que moi j'ai pris du int pour l'index de mon tableau.
Pourquoi cette différence ? Pourquoi pas un int pour l'index de l'énumérateur ?
Autre question : ma façon de faire pour mettre à jour une colonne de ma tableView avec l'identifier sur une multiselection est elle la meilleure ? Y a t-il une méthode qui évite un while, puisque mon tableau (peopleToRemove) a été construit avec l'énumérateur auparavant, et que je le repasse dans un while, alors que par exemple cette méthode :
[employees removeObjectsInArray:peopleToRemove];
permet de supprimer tous les enregistrements de peopleToRemove.
Suis-je clair ? :P
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Voila comment j'aurais codé moi :
Si j'ai bien tout compris ça fait exactement ce que faisait ton code mais en beaucoup plus simple à écrire.
La réponse à ton autre question est à ma connaissance non, pas moyen d'éviter le while...
Maintenant j'ai regardé la doc, et la méthode selectedRowEnumerator] est deprecated dans Mac OS X 10.3 et ne doit donc plus être utilisée, sauf que la méthode donnée en remplacement (selectedRowIndexes) ne renvoie pas un NSEnumerator mais un NSIndexSet objet que je ne connais pas.
Donc voila pour le moment je n'ai pas le temps de chercher plus loin.
aLittleWoodElfe : j'avais vu ds la doc ce "deprecated", c-a-d qu'ils déconseillent de l'utiliser, même si ça marche encore ?
Ok pour le reste.
Merci à tous les deux.
Exactement, ça marche encore mais dans le futur (mais je serais bien en peine de te donner une échéance) ça ne marchera plus. Problème si tu veux être compatible avec 10.2.* tu dois l'utiliser car la méthode donnée en remplacement n'existe que depuis 10.3 (éventuellement tu peux tester à l'exécution la version de Mac OS X et utiliser l'une des deux méthodes en fonction, ou bien coder avec la méthode deprecated pour le moment mais mettre en commentaire le code avec la nouvelle méthode pour pouvoir changer rapidement le jour où ça cassera.
Je chercherai comment on teste la version de MacOs X.
Et dans le if tu mets le code spécifique à Mac OS X 10.2.*
J'ai essayer d'utiliser la méthode préconisée pour Mac OSX.3 et j'aimerais bien votre avis (ça fonctionne évdement, mais qu'est ce que ça vaut d'un point de vu "finesse de programmation" ??? merci de pas être trop sévère :-\)
voilà mon code
Au début j'avais essayé d'utiliser la fonction - (unsigned int)getIndexes:(unsigned int *)indexBuffer maxCount:(unsigned int)bufferSize inIndexRange:(NSRangePointer)range, mais je n'ai pas du tout réussi à l'implémenter :'(
Est-il possible de l'utiliser pour récupérer les index à supprimer ou dois-je revoir mon anglais au plus vite :-\
@+