ios unicode dynamic NSString para icons de fonts

Estoy usando algunos íconos de fuente en ios que requieren identificar el icono por su cadena unicode. Me gustaría poder recuperar el código de mi server como JSON, y crear dinámicamente esta cadena unicode para recuperar el icono de fuente y ponerla en la label, etc. Sin embargo, estoy teniendo problemas para realizar las conversiones. ¿Alguna idea basada en el siguiente código?

El ejemplo de trabajo está aquí, donde "E539" es la cadena recibida del server. Puedo codificarlo y funciona, pero crearlo dinámicamente no es tan fácil.

[iconLabel materialIconWithUnicodeStr:[NSString stringWithFormat:@"\uE539"]]; 

Este tipo de cosas no funcionan:

 [iconLabel materialIconWithUnicodeStr:[NSString stringWithFormat:@"\u%@", @"E539"]]; [iconLabel materialIconWithUnicodeStr:[NSString stringWithFormat:@"\\u%@", @"E539"]]; 

Tengo una class que encontré aquí que tomaría UTF32Char para hacer el unicode. Esta línea funciona, pero no es la solución completa.

 [iconLabel materialIconWithUnicodeStr:[EntypoStringCreator stringForIcon:0xE539]] 

Tratar de unirlo, bastante ciegamente del código que encontré, casi funciona, pero crea el unicode incorrecto. No tengo ni idea de porqué.

 NSString *unicodeStr = @"E539"; // attempt to convert E539 -> 0xE539 UTF32Char outputChar; if ([unicodeStr getBytes:&outputChar maxLength:4 usedLength:NULL encoding:NSUTF32LittleEndianStringEncoding options:0 range:NSMakeRange(0, 1) remainingRange:NULL]) { outputChar = NSSwapLittleIntToHost(outputChar); // swap back to host endian // outputChar now has the first UTF32 character } // this does not give the correct icon at all [iconLabel [EntypoStringCreator stringForIcon:outputChar]]; 

Your materialIconWithUnicodeStr: method está buscando una cadena con el carácter unicode real codificado en él. Su ejemplo que funciona logra esto porque la secuencia de escape funciona en time de compilation para generar el carácter. Tus ejemplos que no funcionan están fallando porque \ u escape es un escape de time de compilation que no funciona en el time de ejecución, independientemente de cómo lo formatees o lo elimines dos veces.

Necesita una manera de get el carácter unicode en time de ejecución del valor hexadecimal que tiene:

 unsigned c = 0; NSScanner *scanner = [NSScanner scannerWithString:@"E539" ]; [scanner scanHexInt: &c]; NSString* unicodeStr = [NSString stringWithFormat: @"%C", (unsigned short)c]; [iconLabel materialIconWithUnicodeStr: unicodeStr];