Initialiser un NSPopUpButton avec un NSArray

HommeCocoa

Membre actif
3 Janvier 2003
173
0
Vevey - Suisse
Bonjour,

J'ai un NSMutableArray qui contient des objets NSDictionnary formant en faite un couple de deux valeurs (un string et un integer) pour chaque étage de mon array.

Je voulais savoir si il était possible qu'un NSPopUpButton s'initialise avec pour Items les valeurs string se trouvant à chaque étage du NSArray.

Voici du code pour illustrer tout ça:

//Ajout d'un compte:
- (IBAction)AjouterCompte:(id)sender
{
[comptes addObject:[self createCompte]];
[self upDatePopUpCompte];
}

//Création du dictionnaires pour les chaques étage de l'Array
- (NSDictionary *)createCompte
{
NSMutableDictionary *unCompte = [[NSMutableDictionary alloc] init];
[unCompte setObject:[avoirInitialField stringValue] forKey:@"Avoir"];
[unCompte setObject:[nomCompteField stringValue] forKey:@"Nom"];

[unCompte autorelease];
return unCompte;
}


// La procédure qui devrait afficher le nom de chaque compte dans la NSPopUpMenu
- (void)upDatePopUpCompte
{
int nbreComptes;
int indice;

[comptePopUp removeAllItems];
nbreComptes = [comptes count];
for(indice=0;indice<nbreComptes;indice++)
{
ici il faudrait un truc pour que la Pop up prenne pour items les nom des comptes!
}
}

Merci beaucoup d'avance!
David :confused:
 
Une méthode sympa serait d'utiliser le key value coding:

Bloc de code:
- (void)upDatePopUpCompte
{
	int nbreComptes;
	int indice;
	NSArray* nomcomptes;

	[comptePopUp removeAllItems];
	nbreComptes = [comptes count];
	nomComptes=[comptes valueForkey:@"nomCompteField];
	[comptePopUp addItemsWithTitles:nomComptes];
}

Pas sûr que ça marche, car j'ai pas testé ;)
 
Merci c'est ce que je cherchais!

Mais il y a juste un problème, je crois que le NSMutableArray n'implemente pas la méthode "valueForKey" car quand je compile ça:


NSArray* nomComptes;

[comptePopUp removeAllItems];

nomComptes = [comptes valueForkey:@"Nom"];
[comptePopUp addItemsWithTitles:nomComptes];

ça me fait l'avertissement suivante et ça ne marche pas :(

'NSMutableArray' may not respond to '-valueForKey:'
 
je profite qu'il y ai des dev cocoa dans le coin pour demander un avis : je créer une appli (voir le topic ) et je voulais savoir si un dbutant ne connaissant pas l'obective C, le C ni java mais quand meme la POO (action script en particulier) peut y arriver en pas trop trop de temps (moins d'un moi, mais le best serait 2semaines ;) )
merci à ceux qui me liront :)
 
ça me fait l'avertissement suivante et ça ne marche pas

'NSMutableArray' may not respond to '-valueForKey:'

:confused:

NSMutableArray hérite de NSArray:
valueForKey:
- (id)valueForKey: (NSString *)key

Returns an array containing the results of invoking valueForKey: using key on each of the receiver's objects. The returned array will contain NSNull elements for each object that returns nil.
Availability
Available in Mac OS X v10.3 and later.

See Also: ? setValue:forKey:

Par contre, c'est Panther minimum


[unCompte setObject:[avoirInitialField floatValue] forKey:@"Avoir"];

ceci ne marche pas, pourquoi ne peut-on pas mettre une valeur floatante dans un objet avec un forKey?

float n'est pas un objet !

donc faire:
Bloc de code:
[unCompte setObject:[NSNumber numberWithFloat:[avoirInitialField floatValue]] forKey:@"Avoir"];
 
an3k a dit:
je profite qu'il y ai des dev cocoa dans le coin pour demander un avis : je créer une appli (voir le topic ) et je voulais savoir si un dbutant ne connaissant pas l'obective C, le C ni java mais quand meme la POO (action script en particulier) peut y arriver en pas trop trop de temps (moins d'un moi, mais le best serait 2semaines ;) )
merci à ceux qui me liront :)

En deux semaines je ne sais pas, commence par rechercher tout ce que tu peux trouver sur NSTextView, car c'est l'objet qui te servira pour gérer ton texte. L'histoire du drawer, c'est fastoche et le pdf ne devrait pas poser trop de problèmes non plus.
 
ok merci :) parce que c'est vraai que je doutais un peu de la faisabilité quand je vois le peu de doc en francais :)
 
mpergand a dit:
Si tu as des difficultés avec la doc en anglais, alors là je dis trois ans :D
méchant !
msn_cry.gif

j'arrive à comprendre l'anglais quand je connais le sujet, mais c'est vrai que quand j'apprend un langage j'ai toujour du mal avec l'anglais parce qu'il faut distinguer de simple indication avec du vocabulaire spé :/
cocoa par la pratique < ca m'aiderai ?

(dsl pour le troll dans le post :S )