NSComboBox et ses données
Bonsoir à tous,
Voilà je viens de passé à l'instant sur les NSComboBox.
J'ai ma ComboBox qui utilise le dataSource. Le truc basique, je ne sais pas comment ajouter un objet ds ma array :)beta:
Comme c'est proche de la tableView niveau gestion de donnée j'ai fait comme ceci (en reliant l'action du ComboBox vers ma classe avec "send action : enter only")
Le NSLog m'indique
Assez surprenant car "genreArray" est une NSMutableArray ???
Voilà je viens de passé à l'instant sur les NSComboBox.
J'ai ma ComboBox qui utilise le dataSource. Le truc basique, je ne sais pas comment ajouter un objet ds ma array :)beta:
Comme c'est proche de la tableView niveau gestion de donnée j'ai fait comme ceci (en reliant l'action du ComboBox vers ma classe avec "send action : enter only")
// Implem<br />- (int)numberOfItemsInComboBox:(NSComboBox *)aComboBox<br />{<br /> return [genreArray count];<br />}<br /><br />- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(int)index<br />{<br /> id theObject;<br /> <br /> theObject = [genreArray objectAtIndex:index];<br /> return theObject;<br />}<br />// Add<br />- (IBAction)addEntrieToComboBox:(id)sender<br />{<br /> // Add the genre to the combo array<br /> [genreArray addObject:[sender stringValue]];<br /> [sender reloadData];<br /> [self saveData];<br />}
Le NSLog m'indique
2005-08-30 20:29:34.859 Trinum[5646] Exception raised during posting of notification. Ignored. exception: *** -[NSCFArray addObject:]: mutating method sent to immutable object
Assez surprenant car "genreArray" est une NSMutableArray ???
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Vérifie donc le gag classique :
NSMutableArray* genreArray = [[NSArray alloc] init];
ou encore
NSMutableArray* genreArray = ...le résultat d'une méthode qui renvoie un NSArray..
Ce qui est important, ce n'est pas le type du pointeur, c'est ce que tu mets dedans. Et l'Objective-C est assez permissif pour ne pas t'empêcher de faire n'importe quoi. D'où l'importance d'activer et de ne pas négliger les warnings...
+
Chacha
Regarde dans ton init (enfin, là où tu initialise _genreArray) si tu n'as pas fait un truc du genre [[NSArray alloc] init.... ]; Si oui, il suffit que tu changes le NSArray en NSMutableArray
[grilled]
Pourtant, je pensais pouvoir te griller sur ce coup là , Chacha.
Bon, tant pis :P
Jsuis trop con
Et que celui qui n'a jamais fait ça lui jette la première
Plus sérieusement, je me répète, mais les warnings sont nos amis (il faut les aimer aussi)
Pour l'Objective-C, je te conseille le truc ci-joint
[edit]
Précision : quand je dis tenir compte des warnings, c'est à dire que le code compile sans aucun warning !
[/edit]
Et pour le C++, j'ai un projet que je compile avec ça :
g++ -Wall -ansi -pedantic -Werror -Wextra-tokens -Wnewline-eof -Wold-style-cast -Woverloaded-virtual -Wsynth -Wnon-virtual-dtor -Wreorder -Wimport -Wformat=2 -W -Wextra -Wfloat-equal -Wfour-char-constants -Wundef -Wendif-labels -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wshorten-64-to-32 -Wsign-compare -Wmissing-field-initializers -Wmissing-format-attribute -Wpacked -Wredundant-decls -Winline -Winvalid-pch -Wlong-long -Wvariadic-macros -Wdisabled-optimization
Bon, mais là j'exagère un peu, le -Wall -ansi -pedantic est bien en C++
[Fichier joint supprimé par l'administrateur]