2010-11-24 15 views
6

como se muestra en la página this¿cuál es la diferencia entre la tecla individual y la ruta clave?

[self setValue:[NSNumber numberWithInt:intValue] forKey:@"myObject.value"]; 

La respuesta fue que "por supuesto, es una ruta clave no una clave única", ¿Qué significa eso?

+1

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueCoding/Concepts/BasicPrinciples.html –

+1

gracias, pero deberías haberlo publicado como respuesta para poder marcarlo como respuesta – LolaRun

Respuesta

10

Una clave es una cadena que identifica una propiedad de un objeto. Una clave ruta es una lista de claves separadas por puntos, que se utiliza para identificar una propiedad anidada.

Aquí hay un ejemplo. Si un objeto person tiene una propiedad address, que a su vez tiene una propiedad town usted podría obtener el valor de la ciudad en dos pasos utilizando las teclas:

id address = [person valueForKey:@"address"]; 
id town = [address valueForKey:@"town"]; 

o en un solo paso utilizando un keyPath:

id town = [person valueForKeyPath:@"address.town"]; 

Tener un vistazo a los documentos de Apple en Key-Value Coding para más detalles.

+0

por lo que la clave debe ser el nombre de una propiedad del objeto que se almacena? si es así, ¿cuál es la alternativa, por ejemplo, como diccionarios o tablas hash en Java y C#? donde las llaves pueden ser cualquier cuerda u objeto? – LolaRun

+1

@LolaRun Sí, las claves deben ser el nombre de la propiedad. O en el caso de los diccionarios, la clave es la clave. Vea el código de ejemplo en [mi respuesta] (http://stackoverflow.com/a/20015365/642706) a otra pregunta: [Acceso directo a valores de diccionario anidados en Objective-C] (http://stackoverflow.com/questions/4317760/directamente-accediendo-anidado-diccionario-valores-en-objetivo-c/20015365 # 20015365) –

+0

gran ejemplo y explicación. –

Cuestiones relacionadas