В настоящее время я получаю смайлики в полезной нагрузке в следующем формате:
\\U0001F6A3\\U0000200D\\U00002640\\U0000FE0F
, который представляет "?♀️"
Однако, если я пытаюсь отобразить это, он показывает только строка выше (экранирована на 1 меньше), а не смайлики, например
NSString *emoji = payload[@"emoji"];
NSLog(@"%@", emoji) then displays as \U0001F6A3\U0000200D\U00002640\U0000FE0F
Это похоже на то, что юникод не может быть распознан. Как получить приведенную выше строку для отображения в виде эмодзи?
Предположим, что формат, в который поступают данные с сервера, изменить нельзя.
ОБНОВЛЕНИЕ
Я нашел другой способ сделать это, но я думаю, что ответ Альберта, размещенный ниже, лучше. Я публикую это только для полноты и справки:
NSArray *emojiArray = [unicodeString componentsSeparatedByString:@"\\U"];
NSString *transformedString = @"";
for (NSInteger i = 0; i < [emojiArray count]; i++) {
NSString *code = emojiArray[i];
if ([code length] == 0) continue;
NSScanner *hexScan = [NSScanner scannerWithString:code];
unsigned int hexNum;
[hexScan scanHexInt:&hexNum];
UTF32Char inputChar = hexNum;
NSString *res = [[NSString alloc] initWithBytes:&inputChar length:4 encoding:NSUTF32LittleEndianStringEncoding];
transformedString = [transformedString stringByAppendingString:res];
}