2010-05-28 6 views
0

J'essaie de reconnaître le résultat d'une requête générique à un objet géré en tant que NSSet. Actuellement, la classe retournée est un membre de _NSFaultingMutableSet, qui est clairement lié, mais échoue aux appels isMemberOf: [classe NSSet] et isKindOf: [classe NSSet]. Etant donné que Cocoa ne fait pas une implémentation directe de NSSet, il n'est pas surprenant que j'ai de l'air dans les tuyaux, mais je me demande si je suis en train de jouer avec quelque chose d'évident de kung-fu que je possède.Essayer de reconnaître _NSFaultingMutableSet en tant que membre de NSSet

Code suit:

SEL selector = NSSelectorFromString(someString); 
if(![self respondsToSelector:selector]){ 
    NSLog(@"Error processing item"); 
       return; 
} 
id items = [self performSelector:selector]; 
Class itemsClass = [items class]; 
if ([itemsClass isKindOfClass:[NSSet class]]) { 
     // do something 
     } 

Répondre

1

Ha! Mon problème a été résolu, comme d'habitude, par RTFM. Il s'avère que si vous n'êtes pas censé appeler isKindOf: sur une classe elle-même, comme je l'étais, mais plutôt sur l'instance particulière. TTT ... TTT.

0

NSObject dispose également d'une méthode de classe isSubclassOfClass: (introduite dans Mac OS X 10.2). Vous pourrait faire:

if ([itemsClass isSubclassOfClass:[NSSet class]]) 
{ 
    // do something 
} 

Bien, il est probablement plus facile de tester simplement l'instance elle-même.

Questions connexes