I am starting to think as well that I will need to create a new class
for my value and type and work it out that way.
I will give that a try.
Thank you!
On 9/7/2016 13:14, David Duncan wrote:
On Sep 6, 2016, at 3:10 PM, Frank D. Engel, Jr. <fde...@fjrhome.net> wrote:
I am trying to set up what is apparently a somewhat unusual behavior:
I have a formatter which I want to behave differently depending on an attribute
of the value coming in, and on a user preference that can be toggled in the
preference panel.
Basically, they are all floating-point values, but they could be coming from
several types of sources: for one type, I want it formatted one way (call it
type S), and for other types, I want the formatting to be one of two things
depending on the value of a checkbox in the preferences (type V or P). The
value itself could be the same but should look different for the different
types.
I am hoping to do this in one formatter because these values are used in
multiple text boxes and table row cells all over my interface, formatters are
difficult or impossible to bind in XCode from what I can see, and different
rows in a table (for example) may have different types in the same column.
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/.
Basically you are trying to add reference semantics (i.e. this the pointer
identity of the number matters). This is probably going to end poorly for you
to be quite honest.
Consider than on 64-bit platforms, NSNumbers are often represented as tagged
pointers, so if you end up with a tagged pointer number that should have 2
“identities”, then you will end up with an effectively random result.
You will probably have a better result if you provide your own class that has
the value and the type.
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.
In a cell-based table, it seems to be working perfectly, but in a view-based
table it is not. In an NSTextField which is not in a table, it is not.
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.
When the preference is changed, I'm using an observer within the class for
myThing to set value back to itself to try to trick the bindings to update to
the correct formatting - this is working in the cell-based table, but does not
seem to work in the standalone NSTextField (I haven't added that code to the
view-based table yet).
I'm seeing some other inconsistencies too that I am working through - is there
an easier way to do this, or does anyone have any idea how I can try to
diagnose what is causing the inconsistent behavior?
_______________________________________________
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/david.duncan%40apple.com
This email sent to david.dun...@apple.com
--
David Duncan
_______________________________________________
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