2009-06-24 30 views
7

Quiero usar mis claves de diccionario para la salida en una tabla agrupada. Esto tiene que ser localizado con todo mi otro contenido. ¿Puedo usar una NSLocalizedString como clave?¿Está bien utilizar una NSLocalizedString como clave en un diccionario?

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: 
    first_array, NSLocalizedString(@"First Array", @"The First Array"), 
    second_array, NSLocalizedString(@"Second Array", @"The Second Array"), nil]; 

Respuesta

13

Puede, ya que es sólo una cadena. Dicho esto, no utilice esta técnica para los diccionarios que va a escribir y luego volver a leer, porque el usuario puede cambiar su idioma entre ellos, y luego estará buscando las claves incorrectas.

2

Esto parece un diccionario estático que se creará una vez en su programa y luego no se cambiará nuevamente. Como tal, no veo ningún problema con eso. Considero que al crear un diccionario no mutable, esto no se modificará ni archivará; porque si lo es, entonces el archivo no se podrá intercambiar entre usuarios con diferentes configuraciones regionales, ya que las claves serán diferentes.

Sin embargo, en lugar de crear matrices localizadas y cargarlas en un diccionario, puede tener un archivo plist localizado que se carga en el diccionario. Puede hacer que tu código sea más legible.

4

Como señaló Peter, al diccionario solo le preocupa que la clave sea un objeto que implemente el protocolo NSCopying. Una cadena lo confirma y sus contenidos no importan en lo que respecta a la legalidad.

Tal vez no sea un problema en este caso, pero hay muchas veces en que una palabra en una langue se correlacionará con dos palabras diferentes en un idioma diferente según el contexto del uso de la palabra. Lo contrario también es posible, dos palabras en un idioma pueden mapear a la misma palabra en un idioma diferente. Este es un problema poco probable de encontrar, pero probablemente sea mejor tratar los valores localizados solo como valores que le muestra al usuario, y usar algún otro valor más estrechamente definido para ser una clave.

Cuestiones relacionadas