2010-10-15 6 views

Odpowiedz

4

może wydawać się characterAtIndex: by rade, ale zwraca unichar, która nie jest Typ danych pochodnych NSObject, a więc nie może być bezpośrednio wprowadzony do tablicy. Będziesz musiał skonstruować nowy ciąg z każdym unicharem.

Prostszym rozwiązaniem jest użycie substringWithRange: z zakresami 1-znakowymi. Uruchom ciąg za pomocą prostej pętli for (int i=0;i<[myString length];i++), aby dodać każdy zakres 1-znakowy do NSMutableArray.

+0

To pracował doskonale, dziękuję bardzo za szybką odpowiedź :-) –

1

A NSString już to tablica jego składników, jeśli przez komponenty masz na myśli pojedyncze znaki. Użyj numeru [string length], aby uzyskać długość ciągu znaków i [string characterAtIndex:], aby uzyskać znaki.

Jeśli naprawdę potrzebujesz tablicy obiektów łańcuchowych z tylko jednym znakiem, musisz samodzielnie utworzyć tę tablicę. Przeprowadź pętlę nad znakami w łańcuchu za pomocą pętli for, utwórz nowy ciąg z pojedynczym znakiem, używając [NSString stringWithFormat:] i dodaj go do swojej tablicy. Ale zazwyczaj nie jest to konieczne.

0

Nie wiem, czy to działa, za to, co chcesz zrobić, ale:

const char *foo = [myString UTF8String] 
char third_character = foo[2]; 

Upewnij się, czytać dokumenty na UTF8String

1

W twoim przypadku, ponieważ nie masz separator, trzeba aby uzyskać oddzielne znaki przez

- (void)getCharacters:(unichar *)buffer range:(NSRange)aRange 

czy ten

- (unichar)characterAtIndex:(NSUInteger) index inside a loop. 

To jedyny sposób, jaki widzę w tej chwili.

24

Jest gotowy funkcja członkiem NSString za to, że:

NSString* foo = @"safgafsfhsdhdfs/gfdgdsgsdg/gdfsgsdgsd"; 
NSArray* stringComponents = [foo componentsSeparatedByString:@"/"]; 
Powiązane problemy