2009-07-07 8 views
23

Ich bin ein wenig verwirrt zwischen einem Unicar und einem Char. Kann ich Unichar ähnlich wie Char's behandeln?Ziel-C: Unichar vs Char

Zum Beispiel kann ich dies tun:

-(BOOL)isNewLine:(unichar)c { 

if(c == '\n') 
    return YES; 
else 
    return NO; 

} 

Antwort

24

Ja, unichar intern unsigned short ist, so können Sie es sinnvoll vergleichen mit einem char (wenn dieser ASCII ist, aber das funktioniert gut für '\n').

6

Seien Sie vorsichtig bei der Suche nach Newline, dass Sie das Format Ihrer Zeilenenden kennen, wie Unix (und moderne Mac) \ n verwenden, aber Windows verwendet \ r \ n und klassische Mac verwendet \ r.

+7

Danke. Ich habe eine Klasse gefunden, NSCharacterSet, die eine statische Methode hat, um NSNewlineCharacterSet zu erzeugen, mit der ich vergleichen kann. – LeeMobile

0

Wenn Unichars vergleichen, sollten Sie stattdessen mit:

if ([[NSCharacterSet newlineCharacterSet] characterIsMember:unicharCharacter]) 
{ 
    //any type of newline 
} 
else 
{ 
    //etc 
} 

Dann werden Sie alle Arten von Zeilenumbrüchen fangen und haben Code, den Sie leicht ändern können verschiedene Zeichensätze entsprechen (wie whitespaceAndNewlineCharacterSet).

Dies ist der große Vorteil mit Unichars.