objective c - Acceda a la propiedad Objective-C dinĂ¡micamente con el nombre de la propiedad
reflection key-value-coding (2)
Si bien @weichsel es correcto, hay una mejor manera.
Utilizar:
[anObject valueForKey: @"propertyName"];
y
[anObject setValue:value forKey:@"propertyName"];
Obviamente, @"propertyName" puede ser un NSString compuesto dinámicamente en tiempo de ejecución.
Esta técnica se llama Key Value Coding y es fundamental para Cocoa.
La razón por la que esto es mejor es porque -valueForKey hará lo que sea necesario para " -valueForKey " cualquier tipo que la propiedad devuelva a un objeto. Por lo tanto, si la propiedad es de tipo int , devolverá una instancia de NSNumber contenga int.
Esto es mucho más fácil de manejar: performSelector solo funcionará para tipos que encajen en la memoria de un puntero.
Tenga en cuenta que también hay -setValue:forKey:
Sé el nombre de la cadena de una propiedad de un objeto. ¿Cómo podría obtener y configurar esa propiedad usando la cadena?
@synthesize propertyName automatiza la generación de métodos getter y setter.
El compilador genera
-
- (id)propertyName; -
- (void)setPropertyName;
Si tiene un selector como NSString, puede usar performSelector:NSSelectorFromString .
p.ej:
[object performSelector:NSSelectorFromString(@"propertyName") ...]