¿Cómo mostrar el emoji y los caracteres especiales en UIlabel y UItextviews?

Estoy tratando de mostrar una cadena en todo tipo de elementos como UIlabel, UItextview, Uitextfield, etc. ….. Estoy tratando de hacer esto de una manera como esta

NSData *data1 = [title dataUsingEncoding:NSUTF8StringEncoding]; NSString *goodValue = [[NSString alloc] initWithData:data1 encoding:NSNonLossyASCIIStringEncoding]; label.text=goodvalue; 

esto está funcionando a veces para mí, pero algunas veces devuelve null para la cadena como esta "Youtube\ud83d\ude27\ud83d\ude2e\ud83d\ude2f\ud83d" Puede alguien guiarme en esto?

Los caracteres Emoji están en el plano unicode 1 y, por lo tanto, requieren más de 16 bits para representar un punto de código. Por lo tanto, dos representaciones UTF8 o una representación UTF32. Unicode es en realidad un sistema de 21 bits y para el plano 0 caracteres (básicamente todo excepto el emoji) 16 bits es suficiente y obtenemos 16 bits. Emoji necesita más de 16 bits.

"Youtube\ud83d\ude27\ud83d\ude2e\ud83d\ude2f\ud83d" . no es válido, es parte de una cadena de escape utf16 unicode, el último \ud83d es 1/2 de un personaje de emoji.

Además, para crear una cadena literal con el carácter de escape "\", el carácter de escape debe escaping: "\\".

 NSString *emojiEscaped = @"Youtube\\ud83d\\ude27\\ud83d\\ude2e\\ud83d\\ude2f"; NSData *emojiData = [emojiEscaped dataUsingEncoding:NSUTF8StringEncoding]; NSString *emojiString = [[NSString alloc] initWithData:emojiData encoding:NSNonLossyASCIIStringEncoding]; NSLog(@"emojiString: %@", emojiString); 

Salida NSLog:

emojiString: Youtube😧😮😯

La cadena emoji también se puede express en utf32:

 NSString *string = @"\U0001f627\U0001f62e\U0001f62f"; NSLog(@"string: %@", string); 

Salida NSLog:

cadena1: 😧😮😯

 NSString *str = @"Happy to help you \U0001F431"; NSData *data = [str dataUsingEncoding:NSNonLossyASCIIStringEncoding]; NSString *valueUnicode = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSData *dataa = [valueUnicode dataUsingEncoding:NSUTF8StringEncoding]; NSString *valueEmoj = [[NSString alloc] initWithData:dataa encoding:NSNonLossyASCIIStringEncoding]; _lbl.text = valueEmoj;