Re: Why can't I use any object as a key in a dictionary?
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