setValue:forKey:
ist Teil der NSKeyValueCoding Protokoll, das unter anderem den Zugriff auf Objekteigenschaften aus Interface Builder ermöglicht. setValue:forKey:
in anderen Klassen implementiert ist als NSDictionary
.
setObject:forKey:
es NSMutableDictionary's
Grund zu existieren. Seine Signatur ähnelt der von setValue:forKey:, ist aber allgemeiner (z. B. für jeden Schlüsseltyp). Es ist eher ein Zufall, dass die Signaturen so ähnlich sind.
Was zur Verwirrung beiträgt, ist, dass die Implementierung von NSMutableDictionary von setValue:forKey:
ist gleichbedeutend mit setObject:forKey:
in den meisten Fällen. In anderen Klassen, setValue:forKey:
ändert Mitgliedsvariablen. Unter NSMutableDictionary
ändern Sie Wörterbucheinträge, es sei denn, Sie stellen dem Schlüssel ein '@'-Zeichen voran - in diesem Fall werden Mitgliedsvariablen geändert.
Así que, Kurz gesagt, verwenden Sie setObject:forKey:
wenn Sie mit Wörterbuchschlüsseln und -werten arbeiten müssen, und setValue:forKey:
in den selteneren Fällen, in denen Sie sich mit KVP .
EDIT: und oh, es sieht so aus, als wäre diese Frage schon einmal gestellt und beantwortet worden: Unterschied zwischen objectForKey und valueForKey?
0 Stimmen
Mögliche Duplikate von Objektiv-C: Was ist der Unterschied zwischen objectForKey und valueForKey?