Entrambi i metodi sono parte di Key-Value Coding e non dovrebbero generalmente essere utilizzato per accedere elemento nei dizionari. Funzionano solo con i tasti di tipo NSString
e richiedono una sintassi specifica.
La differenza tra entrambi è che la specifica di una (singola) chiave dovrebbe solo cercare quell'elemento.
Specificare un percorso di chiave d'altra parte segue il percorso attraverso gli oggetti. Se disponi di un dizionario di dizionari, puoi cercare un elemento nel secondo livello utilizzando un percorso chiave come "key1.key2"
.
Se si desidera accedere agli elementi di un dizionario, è necessario utilizzare objectForKey:
e setObject:forKey:
.
Modifica di rispondere perché non dovrebbe essere utilizzato valueForKey:
:
valueForKey:
funziona solo per le chiavi di stringa. I dizionari possono usare altri oggetti per le chiavi.
valueForKey:
Gestisce le chiavi che iniziano con un carattere "@" in modo diverso. Non è possibile accedere agli elementi le cui chiavi iniziano con @
.
- Soprattutto: utilizzando
valueForKey:
stai dicendo: "Sto usando KVC". Ci dovrebbe essere una ragione per farlo. Quando si utilizza objectForKey:
si sta solo accedendo a elementi in un dizionario attraverso l'API naturale e desiderata.
fonte
2012-07-11 13:44:49
Solo diverso se si utilizza un dizionario più complesso (con più livelli). La ragione per cui la tua sembra la stessa è che un keypath con una sola cosa (no '.' che indica un componente aggiuntivo del percorso) è in realtà solo una chiave. – Dustin