this class is not key value coding-compliant for the key

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 :
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 />
		&quot;04/02/1978&quot;,<br />
		6,<br />
		17,<br />
		30,<br />
		31,<br />
		35,<br />
		37,<br />
		15<br />
	),<br />
		(<br />
		&quot;11/02/1978&quot;,<br />
		1,<br />
		5,<br />
		8,<br />
		17,<br />
		23,<br />
		28,<br />
		14<br />
	),<br />
		(<br />
		&quot;18/02/1978&quot;,<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]small-logo.png

Réponses

  • mpergandmpergand Membre
    février 2012 modifié #2
    [<__NSCFString 0x1001976f0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key (null).Q



    identifier est à  nil (null).



    et NSCFString 0x1001976f0> est pas normal, car ça veut dire que myNumbers est un NSString ...
  • sisopetronsisopetron Membre
    février 2012 modifié #3
    Merci pour ta réponse.



    identifier est à  nil parce que le prog n'a même pas le temps de passer par là : ça plante avant sur ma ligne
    list = [[self parseCSV:result] retain];<br />
    









    [color=#fafafa !important][/color]small-logo.png
  • Bon, je suis toujours bloqué. image/angry.gif' class='bbc_emoticon' alt='>:(' />



    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
  • LexxisLexxis Membre
    mars 2012 modifié #5
    Salut,



    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.
  • Pourquoi ne pas mettre un point d'arrêt et suivre l'exécution du programme pas à  pas en contrôlant les variables concernées.
  • MalaMala Membre, Modérateur
    'd!d!er' a écrit:


    Bon, je suis toujours bloqué. image/angry.gif' class='bbc_emoticon' alt='>:(' />


    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
  • sisopetronsisopetron Membre
    mars 2012 modifié #8
    Malgré la mise en place des identifiers, le problème reste le même. Il me semble pourtant avoir bien compris le truc mais il me manque encore quelque chose. Oui Mala, j'lu et relu tes liens ainsi que la doc Apple.
Connectez-vous ou Inscrivez-vous pour répondre.