En regardant la documentation, je ne vois pas de grande différence. Les deux "value" et "object" sont de type id, et peuvent donc être n'importe quel objet. Key est une fois une chaîne, et dans l'autre cas un id. L'un d'eux semble conserver l'objet, et l'autre non. Quoi d'autre ? Lequel est pour quel cas ?
Réponses
Trop de publicités?setValue:forKey:
fait partie de la Codage NSKeyValueCoding qui, entre autres, vous permet d'accéder aux propriétés des objets à partir d'Interface Builder. setValue:forKey:
est implémenté dans des classes autres que NSDictionary
.
setObject:forKey:
est NSMutableDictionary's
raison d'exister. Sa signature est assez similaire à setValue:forKey :, mais elle est plus générique (par exemple, tout type de clé). C'est un peu une coïncidence que les signatures soient si similaires.
Ce qui ajoute à la confusion, c'est que la mise en œuvre de NSMutableDictionary de l'option setValue:forKey:
est équivalent à setObject:forKey:
dans la plupart des cas. Dans d'autres classes, setValue:forKey:
modifie les variables membres. Dans NSMutableDictionary
il modifie les entrées du dictionnaire, à moins que vous ne préfixiez la clé par le caractère '@' - dans ce cas, il modifie les variables membres.
Donc, en résumé, utilisez setObject:forKey:
lorsque vous devez travailler avec des clés et des valeurs de dictionnaire, et setValue:forKey:
dans les cas plus rares où vous devez aborder KVP .
EDIT : et oh, il semble que cette question a déjà été posée et répondue auparavant : Objective-C : Quelle est la différence entre objectForKey et valueForKey ?
anObject - La valeur de la clé. L'objet reçoit un message de retenue avant d'être ajouté à la base de données de l'UE. NSDictionary
. Cette valeur ne doit pas être nulle.
aKey - La clé de la valeur. La clé est copiée (en utilisant copyWithZone:
; les clés doivent être conformes à la NSCopying
protocole). La clé ne doit pas être nulle.
valeur - La valeur de la clé.
clé - La clé de la valeur. Notez que lorsque vous utilisez le codage clé-valeur, la clé doit être une chaîne de caractères (voir "Principes fondamentaux du codage clé-valeur").