On Jul 11, 2012, at 6:34 AM, Motti Shneor wrote: > Hi. I guess many have already stumped into this one, but my wildest phrasing > attempts in web-searches didn't yield. > > I'd like to have a "data" object, similar to (but much simpler than) CoreData > entity, which only exports a bunch of properties. Something like > > @interface MSPersonalData :NSObject > { > } > -(id) initWithData:(NSDictionary*)initialData; > -(id) init; > @property (nonatomic, retain) NSString* firstName; > @property (nonatomic, retain) NSString* lastName; > @property (nonatomic, retain) NSDate* birthDate; > @property (nonatomic, retain) NSNumber* salary; > @end > > I'd like this object to have NO ivars, and NO property implementations, not > even synthesized. Instead I'd like the object to either inherit from > NSMutableDictionary or own a single NSMutableDictionary ivar, and I'd like > any access to my object to be transparently translated to internal dictionary > valueForKey: and setValue:forKey:. > > Simply put, I'd like code like this: > > MSPersonalData *myDataObject = ;[MSPersonalData alloc] init]; > myDataObject.firstName = @"Motti"; > > to actually perform > > [self setValue:@"Motti" forKey: @"firstName"]; // if MSPersonalData > inherits NSMutableDictionary > or > [internalDictionary setValue:@"Motti" forKey: @"firstName"]; // if > MSPersonalData owns NSMutableDictionary. > > Such object can be very useful for UI binding, and as self-documented API > for a sub-system. Instead of declaring a set of static keys as string, just > behave as if there were iVars per each key of the object. I think CoreData > NSManagedObjects do this, in their "primitive" implementation. > > I tried several schemes for implementation, but all became cumbersome, and I > had to do much trickery, and in the end it looked ugly. I strongly feel there > must be a simple and elegant way to do this. To have a mutable dictionary > react to the "syntactic sugar" of dot notation. > > Is there a good, general solution for this?
What is hampering you, it seems to me, is your requirement to use dot syntax. At least, to use dot syntax and not get a bunch of compiler warnings. Even Core Data still requires you to declare properties to avoid compiler warnings, which is a good sign that what you are after is not "cleanly" possible. HTH, Keary Suska Esoteritech, Inc. "Demystifying technology for your home or business" _______________________________________________ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com