2012-04-06 11 views
4

Ich möchte durch die 'Zeichen' eines Emoji-Eingabe-String (von einem UITextField) durchlaufen und dann nacheinander diese Emoji-Symbole mit einem UILabel anzeigen.Apple Emoji/Iterate durch NSString

for (int i=0; i < len; i++) { 
    unichar c = [transformedString characterAtIndex:i]; 
    [label setText:[NSString stringWithFormat:@"%C", c]]; 
... 

Dies funktioniert für ASCII-Text, aber nicht Emoji-Schriften (alle außer dem Herz-Symbol sind leer). Wie ich festgestellt habe, wird ein einzelnes Emoji-Symbol durch 2 Zeichen in der Zeichenfolge dargestellt. Soweit ich weiß, verwendet Emoji private Bereich Unicode-Zeichen.

Gibt es das überhaupt, um das zu erreichen?

Vielen Dank, Sie mir einige Kopfschmerzen sparen ...

+0

Überprüfen Sie meine Frage ähnlich wie Ihr Problem: http://stackoverflow.com/questions/4615506/composing-unicode-char-format-for-nsstring – Eimantas

Antwort

8

Sie eine der enumerate verwendet wird, kann * Instanzmethoden auf NSString, mit der Option NSStringEnumerationByComposedCharacterSequences.

NSString verwendet UTF-16, die einige Codepunkte als zwei 16-Bit-Werte darstellt. Sie könnten diese "Ersatzpaare" auch manuell in der Zeichenfolge suchen und manuell kombinieren, aber dann würden Sie immer nur Codepunkte anstelle von Zeichen erhalten.


[transformedString 
    enumerateSubstringsInRange:NSMakeRange(0,[transformedString length] 
         options:NSStringEnumerationByComposedCharacterSequences 
        usingBlock: ^(NSString *substring,NSRange,NSRange,BOOL *) 
{ 
    [label setText:substring]; 
}]; 
+0

hey Mann, dass der Trick! vielen Dank.. – Patrick