• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: value transformer for structs?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: value transformer for structs?


  • Subject: Re: value transformer for structs?
  • From: Michael B Johnson <email@hidden>
  • Date: Thu, 23 Mar 2006 05:45:35 -0800


On Mar 22, 2006, at 11:19 PM, John C. Randolph wrote:


On Mar 22, 2006, at 9:07 PM, Michael B Johnson wrote:

I'm assuming I'm missing something obvious, but let's say I have an object that returns a struct (like an NSRect, or better yet, a QTTime) that I want to use bindings to show in the UI.

Looking at the doc it seems (understandably) expecting objects.

Can I do this, or should I have my class return that thing as an NSString or somesuch?

Value transformers do have to take and return objects. For an NSRect, I've used NSRectFromString() and NSStringFromRect() to go back and forth with string representation. There are equivalent also point, range, and size functions. As it happens, there's also a QQTimeFromString() function.

Okay, but my question is how do I wire it up? I realize I'm betraying my minimal knowledge of bindings here, but let's say I implement it like this:


@implementation MYQTTimeRangeValueTransformer
+ (Class)transformedValueClass { return [NSString self]; }
+ (BOOL)allowsReverseTransformation { return NO; }
- (id)transformedValue:(id)value {
	QTTimeRange* r = (QTTimeRange*)value;
	return (value == nil) ? nil : QTStringFromTimeRange(*r);
}
@end

and then register it in my app delegate like this:

MYQTTimeRangeValueTransformer* timeRangeXformer;
timeRangeXformer = [[[MYQTTimeRangeValueTransformer alloc] init] autorelease];
[NSValueTransformer setValueTransformer:timeRangeXformer forName:@"MYQTTimeRangeValueTransformer"];


I then have a NSTextEntry that I bind to a keypath element.timeRange that returns a QTTimeRange and put the value transformer MYQTTimeRangeValueTransformer on it.

So my value transformer gets called (always with a nil value), but the accessor for timeRange never gets called.

Just as a sanity check I made another accessor called timeRangeString that returned QTStringFromTimeRange([self timeRange]) and bound that to another entry, and that gets called fine.

I'm obviously missing something...

And I can mention the obvious - bindings are currently very difficult to debug when they're not working right... Are there some obvious breakpoints that everyone knows about to follow the action as your nib is getting wired up?

Thanks for any insight.


--> Michael B. Johnson, PhD --> http://homepage.mac.com/drwave (new & improved!) --> http://xenia.media.mit.edu/~wave (alum) --> MPG Lead --> Pixar Animation Studios


_______________________________________________ Do not post admin requests to the list. They will be ignored. Cocoa-dev mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: This email sent to email@hidden
  • Follow-Ups:
    • Re: value transformer for structs?
      • From: Derrick Bass <email@hidden>
    • Re: value transformer for structs?
      • From: "John C. Randolph" <email@hidden>
References: 
 >value transformer for structs? (From: Michael B Johnson <email@hidden>)
 >Re: value transformer for structs? (From: "John C. Randolph" <email@hidden>)

  • Prev by Date: Re: Sending mail
  • Next by Date: Re: Copy NSTableView row vs Bindings
  • Previous by thread: Re: value transformer for structs?
  • Next by thread: Re: value transformer for structs?
  • Index(es):
    • Date
    • Thread