• 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: Why can't I use any object as a key in a dictionary?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Why can't I use any object as a key in a dictionary?


  • Subject: Re: Why can't I use any object as a key in a dictionary?
  • From: Roland King <email@hidden>
  • Date: Tue, 2 Feb 2010 00:15:02 +0800

yes I just picked a totally random key name tied to the question the original poster was asking, it was supposed to be illustrative (he wanted to associate an object with the layer so I picked a name to attempt to show that).

No sorry in general it doesn't work that way, it's possible, probably not even that hard, to make a class KVC compliant in a way which allows arbitrary keys but it is not the norm. CALayer (and CAAnimation) do provide this facility, you can setValue:forKey and call valueForKey: on them for a key you define and they also provide a default function too.

This is what the documentation actually says

Both CALayer and CAAnimation are key-value coding compliant container classes, allowing you to set values for arbitrary keys. That is, while the key “foo” is not a declared property of theCALayer class, however you can still set a value for the key “foo” as follows:

In this case my language was rather sloppy, perhaps the documentation should say  .. "are key-value compliant container classes which also allow you to set values for arbitrary keys ... "


On 01-Feb-2010, at 11:35 PM, Charles Jenkins wrote:

>
> On 2010-02-01 03:26, Roland King wrote:
>>
>> By the way, CALayer is a KVC compliant class so you can in fact just store a reference to an arbitrary object in it with
>>
>> [ layer setValue:value forKey:@"KeyForObjectAssociatedWithLayer" ];
>
> Roland, I'm a noob and I'm not sure I've got a good handle on KVC yet... This statement really looks interesting to me, because it seems to suggest that with a KVC-compliant class, you can make arbitrary linkages by just making up keys. (I checked the documentation, and haven't found any property named objectAssociatedWithLayer, so I'm assuming that you were able to create this key name yourself and name it whatever you liked.) Is this true or have I totally misunderstood you?
> _______________________________________________
>
> 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

_______________________________________________

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

References: 
 >Why can't I use any object as a key in a dictionary? (From: Rick Mann <email@hidden>)
 >Re: Why can't I use any object as a key in a dictionary? (From: Roland King <email@hidden>)
 >Re: Why can't I use any object as a key in a dictionary? (From: Roland King <email@hidden>)
 >Re: Why can't I use any object as a key in a dictionary? (From: Charles Jenkins <email@hidden>)

  • Prev by Date: Re: Why can't I use any object as a key in a dictionary?
  • Next by Date: Re: Crash in NSControl's sizeToFit
  • Previous by thread: Re: Why can't I use any object as a key in a dictionary?
  • Next by thread: Re: Why can't I use any object as a key in a dictionary?
  • Index(es):
    • Date
    • Thread