this class is not key value coding-compliant for the key
sisopetron
Membre
Bonjour,
Je progresse lentement dans ma petite appli. Mais j'ai encore besoin d'aide.
Je cherche à encoder un fichier csv dans une tableView. Voilà ce que je fais : je récupère mon fichier sur le net et je le transforme en string :
Ensuite, je le passe à la moulinette d'un bout de code trouvé sur ce forum qui parse un string csv en ses constituants pour me donner un NSMutableArray. Cet Array semble être tout à fait correct puisque il a cette forme :
Ensuite je cherche à placer cela dans ma tableView :
Le résultat est une erreur qui apparait 8 fois (8 items par ligne) puis tout plante lamentablement : [<__NSCFString 0x1001976f0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key (null).Q
Où est-ce que je me suis planté ? Merci de m'aider.
[color=#fafafa !important][/color]
Je progresse lentement dans ma petite appli. Mais j'ai encore besoin d'aide.
Je cherche à encoder un fichier csv dans une tableView. Voilà ce que je fais : je récupère mon fichier sur le net et je le transforme en string :
NSString *result = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
Ensuite, je le passe à la moulinette d'un bout de code trouvé sur ce forum qui parse un string csv en ses constituants pour me donner un NSMutableArray. Cet Array semble être tout à fait correct puisque il a cette forme :
array : (<br />
(<br />
"04/02/1978",<br />
6,<br />
17,<br />
30,<br />
31,<br />
35,<br />
37,<br />
15<br />
),<br />
(<br />
"11/02/1978",<br />
1,<br />
5,<br />
8,<br />
17,<br />
23,<br />
28,<br />
14<br />
),<br />
(<br />
"18/02/1978",<br />
3,<br />
5,<br />
6,<br />
8,<br />
17,<br />
18,<br />
10<br />
),<br />
............
Ensuite je cherche à placer cela dans ma tableView :
list = [[self parseCSV:result] retain];
via une classe perso déclarée ainsi :
@interface MyNumbers : NSObject { <br />
NSString *date;<br />
int number1;<br />
int number2;<br />
int number3;<br />
int number4;<br />
int number5;<br />
int number6;<br />
int number7; <br />
}<br />
@property (nonatomic, retain) NSString *date;<br />
@property int number1;<br />
@property int number2;<br />
@property int number3;<br />
@property int number4;<br />
@property int number5;<br />
@property int number6;<br />
@property int number7;<br />
}
Je renvoie l'objet à afficher dans ma tableView par :
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { <br />
NSString *identifier = [tableColumn identifier];<br />
MyNumbers *myNumbers = [list objectAtIndex:row];<br />
return [myNumbers valueForKey:identifier]; <br />
}<br />
Le résultat est une erreur qui apparait 8 fois (8 items par ligne) puis tout plante lamentablement : [<__NSCFString 0x1001976f0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key (null).Q
Où est-ce que je me suis planté ? Merci de m'aider.
[color=#fafafa !important][/color]
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
identifier est à nil (null).
et NSCFString 0x1001976f0> est pas normal, car ça veut dire que myNumbers est un NSString ...
identifier est à nil parce que le prog n'a même pas le temps de passer par là : ça plante avant sur ma ligne
[color=#fafafa !important][/color]
Mon post précédent n'est pas tout à fait correct : le programme ne plante pas sur cette ligne mais après. Le problème c'est que je ne sais pas déterminer où exactement car xcode ne me donne pas d'infos à ce sujet et quand je mets un breakpoint et que ensuite je poursuis en mode pas à pas, xcode m'affiche des pages de langage machine auquel je ne comprends pratiquement rien.
Il me semble donc que le plantage se fait au moment où il doit afficher le NSMutableArray dans la tableView. Mais je ne sais toujours pas pourquoi.
Merci de votre aide.
undefined
en fait l'"identifier" doit être positionner dans l'interface (dans le XIB), ou en le spécifiant dans ton code (avant l'utilisation de la tableview) avec un [ma_colonne setidentifier:@date] et ainsi de suite pour toutes les colonnes (voir ici). Le plus rapide est évidemment le positionnement de la valeur à partir de l'éditeur d'UI.
Et comme l'a très justement fait remarqué mpergrand, ton identifier n'étant pas renseigné,[tableColumn identifier] te retourne nil et provoque l'erreur lors de l'appel à valueForKey.
En même temps, il te manque les bases. Il serait peut-être bon de commencer par comprendre comment fonctionne une NSTableView. Un peu de lecture...
http://cocoadevcentr...cles/000063.php
http://www.cocoadev....bleViewTutorial