Re: Detecting reading a key in KVC
Re: Detecting reading a key in KVC
- Subject: Re: Detecting reading a key in KVC
- From: Ken Thomases <email@hidden>
- Date: Thu, 11 Nov 2010 19:26:33 -0600
On Nov 11, 2010, at 4:57 PM, Graham Cox wrote:
> On 12/11/2010, at 3:30 AM, Ken Thomases wrote:
>
>> You should not override -setValue:forKey: or -valueForKey: if you can avoid it. Instead, implement the methods -setValue:forUndefinedKey: and -valueForUndefinedKey:. They are precisely for implementing "dynamic" properties in this manner.
>
> Understood, but the OP's problem as I understand it is that it's not that the key is undefined, but the value associated with it is uninitialized. So rather than return nil, or zero, he wants to trigger a remote fetch of the value. KVC doesn't appear to provide a mechanism for that out of the box.
He was using an NSMutableDictionary for his model, instead of a custom class. The barrier to using a custom class was that he has many properties and didn't want to implement them all. The suggestion was to make a class which wraps a mutable dictionary and use the KVC methods to provide access to them and also serve as the trigger for retrieving those which are not yet cached.
All fine so far.
The suggestion, though, was to implement the wrapper by overriding -setValue:forKey: and -valueForKey:. You shouldn't override those, but rather override -setValue:forUndefinedKey: and -valueForUndefinedKey:. The respective implementations would be the same -- they would pass through to the mutable dictionary and initiate fetches for absent values. -setValue:forKey: and -valueForKey: have some "special powers" that you lose if you override them.
Regards,
Ken
_______________________________________________
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