A couple of suggestions.
> Here is what I have so far: I used a category on NSNumber to add a
> "valueType" attribute as described at
> http://nshipster.com/associated-objects/.
>
> The formatter checks this and the user preference when formatting an incoming
> value. It sets some instance variables on itself to remember what it last
> saw so that it can correctly default its interpretation of an entered value
> when trying to send it back.
>
On your associated object setter add KVO support.
- (void)setValueType:(int)valueType
{
[self willChangeValueForKey:@"valueType"];
objc_setAssociatedObject(self, @selector(valueType), @(valueType),
OBJC_ASSOCIATION_RETAIN);
[self didChangeValueForKey:@"valueType"];
}
> The binding for the values is indirect - to the effect of "myThing.value" -
> and if I change "myThing" but the new thing has the same numeric value, the
> formatter does not always seem to trigger to render the value in the correct
> format - it holds that of the previous thing. If I change the value from
> another control, when the bindings update the field, the formatting is
> suddenly corrected.
The formatter will only receiver the value part of “myThing.value”.
It may well be that the formatter doesn’t re-format because the actual value
doesn’t change - formatting may be an expensive operation.
In this case you may want to reformat so:
1. consider Manual triggering of reformat if valueType changes.
2. Try overriding NSFormatter -stringForObjectValue: - that should give you a
low enough foothold into the rendering.
HTH
J
_______________________________________________
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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [email protected]