# Initialiser un NSPopUpButton avec un NSArray



## HommeCocoa (28 Septembre 2005)

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)AjouterCompteid)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


----------



## mpergand (28 Septembre 2005)

Une méthode sympa serait d'utiliser le key value coding:


```
- (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é


----------



## HommeCocoa (28 Septembre 2005)

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];
> 
> ...



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

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


----------



## HommeCocoa (28 Septembre 2005)

Autre interrogation:

[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?


----------



## an3k (28 Septembre 2005)

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


----------



## mpergand (28 Septembre 2005)

> ça me fait l'avertissement suivante et ça ne marche pas
> 
> 'NSMutableArray' may not respond to '-valueForKey:'



 

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.
> ...



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:

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


----------



## mpergand (28 Septembre 2005)

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.


----------



## an3k (28 Septembre 2005)

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 (28 Septembre 2005)

an3k a dit:
			
		

> ... quand je vois le peu de doc en francais



Si tu as des difficultés avec la doc en anglais, alors là je dis trois ans


----------



## an3k (28 Septembre 2005)

mpergand a dit:
			
		

> Si tu as des difficultés avec la doc en anglais, alors là je dis trois ans


méchant ! 
	

	
	
		
		

		
			




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 )


----------

