Petit arbre dans les préférences

FloFlo Membre
mai 2009 modifié dans API AppKit #1
Bonjour à  tous,

J'ai construit un petit arbre de la manière suivante :

<br />self.sidebar = [NSArray arrayWithObjects: NODE_0, NODE_1, NODE_2,<br />		    [NSArray arrayWithObjects: NODE_3, [NSMutableArray array], nil],<br />		    [NSArray arrayWithObjects: NODE_4, [NSMutableArray array], nil], nil];<br />


Je voudrais juste pouvoir faire la différences entre les noeuds de la classe NSString et ceux de la classe NSArray.

j'ai trouvé ça (noeud est de type id):

<br />   if ([noeud className] == @&quot;NSString&quot;) // une NSString<br />   else // un NSarray<br />


ou :

<br />  if ([noeud isMemberOfClass: [NSString class]]) // une NSString<br />  else // un NSArray<br />


Laquelle des deux serait la plus optimisée, ou existe-t-il une meilleure solution ?

Réponses

  • Philippe49Philippe49 Membre
    mai 2009 modifié #2
    if( [noeud  isKindOfClass:[NSString class]] ) permet de tester si noeud appartient à  une sous-classe , sachant en l'occurence qu'aucun objet n'appartient à  la classe NSString.

    Par exemple ,
    NSString * string=[[NSString alloc] init];<br />	if([string isMemberOfClass:[NSString class]]) {<br />		NSLog(@&quot;appartient&quot;);<br />	} else {<br />		NSLog(@&quot;%@&quot;,NSStringFromClass([string class]));<br />	}<br />
    

    fait écrire : NSCFString
  • FloFlo Membre
    02:56 modifié #3
    Merci pour ta réponse,
    du coup je me dis : pourquoi ne pas faire le test sur NSArray ?

    Et sinon laquelles des techniques serait la plus optimisée ? Le className ou le isMemberOfClass: (pour un test avec NSArray du coup j'entends) ?
  • Philippe49Philippe49 Membre
    02:56 modifié #4
    ni le className, ni le isMemberOfClass ne vont marcher, mais isKindOfClass

    NSString * string=[[NSString alloc] init];<br />	NSArray * array=[NSArray arrayWithObject:string]; <br />	if([array isMemberOfClass:[NSArray class]]) {<br />		NSLog(@&quot;appartient&quot;);<br />	} else {<br />		NSLog(@&quot;%@&quot;,NSStringFromClass([array class]));<br />	}<br />
    


    fait écrire NSCFArray
  • Philippe49Philippe49 Membre
    02:56 modifié #5
    Maintenant pour ce qui concerne la conception d'un arbre, il faut faire une classe Node (ou utiliser la classe existante NSTreeNode).

    Un peu de lecture
  • FloFlo Membre
    02:56 modifié #6

    Maintenant pour ce qui concerne la conception d'un arbre, il faut faire une classe Node (ou utiliser la classe existante NSTreeNode).


    Pas de problème de ce côté j'ai déjà  tout fait  :)

    Merci pour ton aide 
Connectez-vous ou Inscrivez-vous pour répondre.