Objective-C Language Exemple le plus commun de codage de valeur réelle


Exemple

Key Value Coding est intégré à NSObject en utilisant le protocole NSKeyValueCoding .

Qu'est-ce que cela signifie?

Cela signifie que tout objet id est capable d'appeler la méthode valueForKey et ses différentes variantes comme valueForKeyPath, etc.

Cela signifie également que tout objet id peut invoquer la méthode setValue et ses différentes variantes.

Exemple:

id obj = [[MyClass alloc] init];
id value = [obj valueForKey:@"myNumber"];

int myNumberAsInt = [value intValue];
myNumberAsInt = 53;
[obj setValue:@(myNumberAsInt) forKey:@"myNumber"];

Des exceptions:

L'exemple ci-dessus suppose que MyClass possède une propriété NSNumber appelée myNumber. Si myNumber n'apparaît pas dans la définition de l'interface MyClass, une exception NSUndefinedKeyException peut être déclenchée sur les deux lignes 2 et 5 - communément appelée:

this class is not key value coding-compliant for the key myNumber.

Pourquoi c'est si puissant:

Vous pouvez écrire du code qui peut accéder dynamiquement aux propriétés d'une classe, sans avoir besoin d'interface pour cette classe. Cela signifie qu'une vue de table peut afficher les valeurs de toutes les propriétés d'un objet dérivé de NSObject, à condition que ses noms de propriété soient fournis dynamiquement à l'exécution.

Dans l'exemple ci-dessus, le code peut aussi bien fonctionner sans que MyClass soit disponible et que ID type obj soit disponible pour le code d'appel.