• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Detecting reading a key in KVC
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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

  • Follow-Ups:
    • Re: Detecting reading a key in KVC
      • From: Remco Poelstra <email@hidden>
References: 
 >Detecting reading a key in KVC (From: Remco Poelstra <email@hidden>)
 >Re: Detecting reading a key in KVC (From: "email@hidden" <email@hidden>)
 >Re: Detecting reading a key in KVC (From: Quincey Morris <email@hidden>)
 >Re: Detecting reading a key in KVC (From: "email@hidden" <email@hidden>)
 >Re: Detecting reading a key in KVC (From: Quincey Morris <email@hidden>)
 >Re: Detecting reading a key in KVC (From: Remco Poelstra <email@hidden>)
 >Re: Detecting reading a key in KVC (From: Graham Cox <email@hidden>)
 >Re: Detecting reading a key in KVC (From: Remco Poelstra <email@hidden>)
 >Re: Detecting reading a key in KVC (From: Graham Cox <email@hidden>)
 >Re: Detecting reading a key in KVC (From: Ken Thomases <email@hidden>)
 >Re: Detecting reading a key in KVC (From: Graham Cox <email@hidden>)

  • Prev by Date: Fwd: NSSecureTextFieldCell detected a field editor ((null)) - Solved.
  • Next by Date: Re: NSTextView vs NSTextField
  • Previous by thread: Re: Detecting reading a key in KVC
  • Next by thread: Re: Detecting reading a key in KVC
  • Index(es):
    • Date
    • Thread