The class object is 'message' and its key 'messageID' is an NSString. If I set the object to be an NSString (or NSArray or NSDictionary), the dictionary stores it just fine. It just won't store 'message'.

messageID is, in reality, generated elsewhere. But you could imagine it to be NSString* messageID with a value of, say, @"FirstDocument". Messenger refers to a nib file with which message is initialized. And I know that my method name (initWithApp) might be a bit rubbish, but I can always refactor later!

NewMessage* message = [[NewMessage alloc] initWithApp:@"Messenger" :self];
[currentMessages setObject:message forKey:messageID];




On 13 Aug 2010, at 21:22, Greg Parker wrote:

On Aug 13, 2010, at 1:09 PM, Geoffrey Holden wrote:
Is it possible to store a class object in NSMutableDictionary?

Class objects cannot be used as dictionary keys, because NSDictionary copies its keys and class objects can't be copied. Class objects can be used as dictionary values.


[currentMessages setObject:message forKey:messageID];

Is `messageID` supposed to be the class object? If so, that won't work. One solution is to use NSString class names for the dictionary keys, and use NSClassFromString() and NSStringFromClass() to convert.


--
Greg Parker     gpar...@apple.com     Runtime Wrangler



_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to