2009-07-07 14 views
23

Jestem trochę zdezorientowany między unichar i char. Czy mogę traktować unichar podobnie jak char?Objective-C: unichar vs. char

Na przykład, mogę to zrobić:

-(BOOL)isNewLine:(unichar)c { 

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

} 

Odpowiedz

24

Tak, unichar jest wewnętrznie unsigned short, więc można sensownie porównać go z char (jeżeli jest ASCII, ale to działa dobrze dla '\n').

6

Uważnie sprawdź, czy znasz znak końca linii, ponieważ Unix (i współczesny Mac) używają \ n, ale Windows używa \ r \ n, a klasyczny Mac używa \ r.

+7

Dzięki. Znalazłem klasę NSCharacterSet, która ma statyczną metodę tworzenia NSNewlineCharacterSet, którą mogę porównać. – LeeMobile

0

Porównując unichars rozważyć zamiast przy użyciu:

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

Wtedy złapać wszystkie rodzaje nowych linii i posiadają kod można łatwo modyfikować, aby dopasować różne zestawy znaków (jak whitespaceAndNewlineCharacterSet).

To jest wielka zaleta z Unichars.