2009-12-16 10 views
14

Gibt es eine Möglichkeit, Klassennamen zwischen 2 Objekten zu vergleichen?Wie vergleichen wir 2 Klassennamen eines Objekts

Like:

NSString *bla = [[NSString alloc] init]; 
if([bla class] isEqual: NSString]) 
NSLog(@"success"); 

nicht sicher, ob meine Syntax korrekt ist.

Antwort

56

korrekte Syntax:

if ([bla class] == [NSString class]) 

Sie auch -isMemberOfClass: oder verwenden können - isKindOfClass: Nachrichten von NSObject protocol.

+0

Siehe http://stackoverflow.com/q/16424298/1445366 für Fälle, in denen dies nicht funktioniert. –

11

Dies sollte es tun:

NSString *bla = [[NSString alloc] init]; 
if ([bla isMemberOfClass: [NSString class]] == YES) 
    NSLog(@"Success"); 
+1

Natürlich ist '== YES' optional. Es sieht wahrscheinlich auch ohne es besser aus! –

+5

In der Tat ist ein Vergleich Ihrer BOOLs mit JA eine schlechte Idee. Der BOOL-Typ ist nicht auf YES und NO beschränkt, und einige Methoden geben einen BOOL-Wert zurück, der keins ist. – Chuck

+0

Welche Methoden geben ein 'BOOL' zurück, das ist keines? – Wevah

Verwandte Themen