2010-08-12 5 views
11

Gibt es eine vergleichbare Funktion wie "isKindOfClass:" für den Vergleich einer 'Klasse' mit einer anderen (d. H. Ohne eine Instanz einer Klasse zu konstruieren). Zum Beispiel:Vergleichen von "Klasse" mit anderer "Klasse" in Objective-C

Class class = NSClassFromString(@"NSNumber"); 

[NSNumber isKindOfClass:class]; // YES 
[NSString isKindOfClass:class]; // NO 

Vielen Dank!

Antwort

21

+ (BOOL)isSubclassOfClass:(Class)aClass

und

Class theClass = NSClassFromString(@"NSNumber"); 

if ([NSNumber class] == theClass) { 
    // YES 
} 

nie mehr als 1 Instanz einer Klasse ist, deshalb == der Betreiber ist, die Sie suchen. Ja

+0

Hallo Georg. Das zweite Beispiel führt zu einem Kompilierungsfehler "Erwarteter Ausdruck vor 'NSNumber'", aber der erste funktioniert! Wissen Sie, ob es möglich ist, die Unterklassen nicht einzuschließen? Vielen Dank! –

+1

Die if-Anweisung sollte 'if ([NSNumber class] == class)' sein. Weitere Informationen finden Sie unter: http://StackOverflow.com/questions/3107213 –

+0

@Kevin: Das Problem behoben, ich sollte es vorher überprüft haben. Es tut uns leid. –

5

, können Sie tun:

[NSNumber isSubclassOfClass:class]; //YES 
[NSString isSubclassOfClass:class]; //NO 

Dies sind Klassenmethoden auf NSObject.

+0

Danke Dave. Ist es möglich, nicht Subklassen einzuschließen? Vielen Dank. –

+0

@Kevin als @Georg weist darauf hin, Sie können tun: '[NSNumber Klasse] == Klasse' –

+0

Ah cool! Danke Dave! –

Verwandte Themen