Objective-C Language Esempio più comune di codifica dei valori chiave della vita reale


Esempio

La Key Value Coding è integrata in NSObject usando il protocollo NSKeyValueCoding .

Cosa significa?

Significa che qualsiasi oggetto id è in grado di chiamare il metodo valueForKey e le sue varie varianti come valueForKeyPath ecc. '

Significa anche che qualsiasi oggetto id può invocare il metodo setValue e le sue varie varianti.

Esempio:

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

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

eccezioni:

Sopra l'esempio si presuppone che MyClass abbia una proprietà NSNumber chiamata myNumber. Se myNumber non viene visualizzato nella definizione dell'interfaccia MyClass, è possibile generare un'eccezione NSUndefinedKeyException ad entrambe le righe 2 e 5, popolarmente conosciute come:

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

Perché questo è così potente:

Puoi scrivere codice che può accedere alle proprietà di una classe in modo dinamico, senza bisogno di interfaccia per quella classe. Ciò significa che una vista tabella può visualizzare valori da qualsiasi proprietà di un oggetto derivato NSObject, a condizione che i suoi nomi di proprietà siano forniti dinamicamente in fase di runtime.

Nell'esempio sopra, il codice può anche funzionare senza che MyClass sia disponibile e il tipo di oggetto obj sia disponibile per chiamare il codice.