Re: KVG generic enough?
Re: KVG generic enough?
- Subject: Re: KVG generic enough?
- From: Marco Tabini <email@hidden>
- Date: Wed, 18 Jul 2012 09:16:55 -0400
On 2012-07-18, at 9:08 AM, William Squires <email@hidden> wrote:
> Okay, after reading some of the documentation on KVC coding, I understand (I think) that the point is to allow me to specify a property of an object with an NSString, then set/get that property value using KVC (i.e. valueForKey: or setValue:forKey:). But it seems like the fact that there's no way to specify (or grab) the value of the property in a generic-enough manner would be a problem - anyone using it would still have to know the data type of the property they want to access, and thus they might as well just use the accessors. I can see this would work if ObjC had a generic data type (like the 'variant' data type in VB/REALbasic), but AFAIK, ObjC doesn't have such, and valueForKey: returns an id, right?
> How can I determine what I get back? (i.e. what does the id pointer point to? an NSString? an NSNumber? NSDecimalNumber? NSData? another NSObject subclass?)
id *is* ObjC's “variant” type. You can determine the type of the underlying data by first determining its class (e.g.: [obj isKindOfClass:[NSString class]]), and then going from there. Scalar or composite values are wrapped in the appropriate classes—e.g.: NSNumber for numeric values and NSValue for generic data. The whole system is really quite flexible, particularly when you consider that ObjC, unlike so many other languages, doesn't choke on Nil values.
—Mt.
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden