I know the string name of a property of an object. How would I go about getting and setting that property using the string?
While @weichsel is correct, there is a better way.
Use:
[anObject valueForKey: @"propertyName"];
and
[anObject setValue:value forKey:@"propertyName"];
Obviously, @"propertyName"
can be an NSString
that is dynamically composed at runtime.
This technique is called Key Value Coding and is fundamental to Cocoa.
Why this is better is because -valueForKey
will do what is necessary to "box" whatever type the property returns into an object. Thus, if the property is of type int
, it'll return an NSNumber
instance containing the int.
This is much easier to deal with -- performSelector
will only work for types that happen to fit into a pointer's worth of memory.
Note that there is also -setValue:forKey:
.