Если я не ошибаюсь, метод UTF8String
возвращает байты кодировки UTF-8 для строки. Для zählen это:
$ perl -MEncode -Mutf8 -E 'say join ", ", map ord, split //, encode("utf8", "zählen")'
122, 195, 164, 104, 108, 101, 110
… где <195, 164> - последовательность кодирования UTF-8 для ä
. Таким образом, когда вы нажимаете tmpChars+2
, вы получаете символ с ASCII-кодом 164. Что, вероятно, не то, что вы хотите. Разве вы не больше после unichar
с? Существует метод characterAtIndex:
, который возвращает их, хотя и один за другим:
NSString *test = @"zählen";
unichar c = [test characterAtIndex:1];
NSLog(@"---> %C", c); // ---> ä