On Aug 27, 2008, at 21:00, Markus Spoettl wrote:

I have objects storing simple scalar values (NSInteger, double). Those values/properties are bound to text fields. Now, if the user clears the text field and the underlying property gets updated, it's not simply setting the value to 0 or its equivalent, instead

- (void)setNilValueForKey:(NSString *)key

is invoked. Failing to implement it causes an exception when exiting out of a cleared text field bound to a scalar value.

I was wondering if there was a more direct and less glue-code involving way of doing this. I don't want to go and store NSNumbers instead of scalar values, which I imagine would have the advantage of accepting nil values inherently.

Can I tell the bindings system to directly set scalars to 0 in case of nil values?

I suspect you can get the effect you want by using a formatter on the text field. Someone was complaining on this list a week or two ago that 10.4+ style formatters never set properties to nil values, but this sounds like the behavior you want.

There's another reason you should generally be using formatters. Without them, the value of the text field gets sent *as a string*, which eventually gets converted to a scalar with [NSString integerValue] or [NSString doubleValue] (etc). Unfortunately, there's no [NSString unsignedIntegerValue] (etc) so if your property is type NSUInteger (etc) the conversion will throw an exception.

When you use formatters, the value of the text field gets sent as a NSNumber, which supports all the conversions to a scalar.


_______________________________________________

Cocoa-dev mailing list ([email protected])

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 [EMAIL PROTECTED]

Reply via email to