Длина NSString -Специальные символы

У меня есть UITextField, в который пользователи будут вводить символы. Это так же просто, как вернуть фактическую длину? Когда строка содержит A -Z 1 -9 символов, она работает так, как ожидалось, но любые эмодзи или специальные символы учитываются дважды.

В самом простом формате для некоторых специальных символов, таких как смайлики, выделяется 2 символа.:

NSLog(@"Field '%@' contains %i chars", myTextBox.text, [myTextBox.text length] );

Я пробовал перебирать каждый символ с помощью characterAtIndex, substringFromIndexи т. д., но ничего не вышло.

Согласно ответу ниже, точный код, используемый для подсчета символов (надеюсь, что это правильный подход, но он работает..):

NSString *sString = txtBox.text;

__block int length = 0;
[sString enumerateSubstringsInRange:NSMakeRange(0, [sString length]) 
                        options:NSStringEnumerationByComposedCharacterSequences
                        usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {

                            length++;                                
                        }];

NSLog(@"Total: %u", length );
8
задан Ralpharoo 5 May 2012 в 13:58
поделиться