Ambos métodos son parte de Key-Value Coding y no deben en general ser utilizados para el acceso elemento en los diccionarios. Solo funcionan en las claves del tipo NSString
y requieren una sintaxis específica.
La diferencia entre ambos es que especificar una tecla (simple) simplemente buscaría ese elemento.
La especificación de una ruta de acceso de tecla sigue la ruta a través de los objetos. Si tuviera un diccionario de diccionarios, podría buscar un elemento en el segundo nivel utilizando una ruta clave como "key1.key2"
.
Si solo desea acceder a elementos en un diccionario, debe usar objectForKey:
y setObject:forKey:
.
Editar de responder por qué valueForKey:
no debe usarse:
valueForKey:
sólo funciona para las claves de cadena. Los diccionarios pueden usar otros objetos para las claves.
valueForKey:
Maneja las teclas que comienzan con el carácter "@" de manera diferente. No puede acceder a los elementos cuyas claves comienzan con @
.
- Lo más importante: Al usar
valueForKey:
está diciendo: "Estoy usando KVC". Debería haber una razón para hacer esto. Cuando usa objectForKey:
, solo está accediendo a elementos en un diccionario a través de la API natural prevista.
Solo diferente si usa un diccionario más complejo (con varios niveles). La razón por la que tuyo tiene el mismo aspecto es que un keypath con solo una cosa (no '.' indica un componente de ruta adicional) es solo una clave. – Dustin