2011-07-25 4 views
7

me gustaría hacer algo como esto:definir constantes unichar en el código

const UniChar KA = 'か'; 

Pero XCode escupe "constante multi-carácter".

trato de evitar el uso de + characterAtIndex de NSString ... Necesito esto para repetir el kana, como se puede iterar sobre el alfabeto (char myCharacter = 'A';)

que estaba viendo Objective c doesn't like my unichars? pero en realidad no se solucionarlo de una manera agradable para mí.

De todos modos, estoy tratando de poner el "tenten" y/o "maru" encima de か, た, etc. como か → が, た. Puede ser una solución preparada para eso, en caso de que alguien lo sepa, eso también resolverá mi problema.

+1

"pero realmente no lo resuelve de una manera agradable para mí". Por qué no? Si se va a referir al carácter by con el nombre KA de todos modos, ¿por qué importa si el código que configura la constante usa el símbolo or o un código hexadecimal? Además, ¿estás tratando de reemplazar KA con GA por alguna razón (alguna cifra barata?), O la entrada en realidad tiene un dakuten o un handakuten (nombres formales para tenten y maru, respectivamente) que combinan el personaje? En ese caso, lo que realmente está viendo es lo que se llama "normalización Unicode": pruebe Google. –

Respuesta

6

El código fuente generalmente está codificado como UTF-8, lo que significa que no puede usar literales de caracteres de 16 bits allí. Es necesario utilizar la secuencia de escape:

const UniChar KA = '\u30AB'; 

o especificar el valor numérico:

const unichar KA = 0x30AB; 

(Nota:. Realmente no tengo ni idea de si ese es el código correcto para el ejemplo de carácter que diste)

Creo que su única otra opción es crear a .strings file, que puede y debe ser codificada en UTF-16, y luego obtener los caracteres en su programa usando NSLocalizedString.

+0

Podría ser "resuelto" por eso, pero tal como lo notas, no es legible en el código, simplemente no sabes si la cadena hexadecimal que escribes realmente es el personaje deseado (sin buscar unicode realmente, pero también es propenso a errores). Me estoy inclinando por la normalización unicode que sugirió Karl, pero podría usar algo así como un NSCharacterSet como una alternativa. – Jonny

+0

No puede poner caracteres de 16 bits en su código fuente. Simple como eso. Agregué otra posibilidad - usando la localización. –

+0

Realmente no entendí lo que quería decir con un archivo de cadenas aquí - mi proyecto actual no está (y no será) internacionalizado. Terminé usando dos NSCharacterSet: s, luego probando un hiragana contra cualquiera de ellos. Agregando el tenten luego por "character ++" y el círculo con "character + = 2". :-P Entonces otra vez es gracioso que está perfectamente bien escribir @ "こ れ is is is" pero 'か' es un no-go. Supongo que @ 'か' sería la respuesta lógica, pero no creo que funcione ... – Jonny

Cuestiones relacionadas