On 2 Feb 2010, at 06:39, BareFeet wrote:

>> On Jan 29, 2010, at 9:38 AM, Jerry Krinock wrote:
>> 
>>> 
>>> The problem is that when a subclass A is selected, the UI elements bound to 
>>> subclass B no longer have valid bindings so generate an error. How can I 
>>> solve this?
>> 
>> You can also uncheck the "Raises For Not Applicable Keys" in the bindings 
>> inspector pain in Interface Builder for your text fields.
> 
> Thanks for the tip. Once I read it, it seemed like the logical solution. 
> However, it doesn't seem to make any difference. All I could find in the 
> documentation about that checkbox/attribute was:
> 
> NSRaisesForNotApplicableKeysBindingOption
> An NSNumber object containing a Boolean value that specifies if an exception 
> is raised when the binding is bound to a key that is not applicable—for 
> example when an object is not key-value coding compliant for a key.
> 
> 
> To recall, I have something like this:
> 
> @interface TopClass : NSObject
> {
>       // some ivars
> }
> 
> // some accessors
> 
> @end
> 
> @interface SubClass : TopClass
> {
>       NSString* subValue;
> }
> 
> - (NSString) subValue;
> 
> @end
> 
> I have an NSTreeController that contains a list of TopClass and SubClass 
> items. The user selects an item in that list.
> 
> I have a text field in Interface Builder whose value is bound (ie via 
> bindings) to the subValue accessor, ie: NSTreeController -> selection.subValue
> 
> Obviously, the subValue accessor is only valid if the currently selected item 
> is a SubClass object. If the user selects a TopClass item, it throws an 
> exception. How can I prevent this?

With "Raises for Not Applicable Keys" turned off, the exception will still be 
thrown. But, the bound object will catch it and treat as a not applicable 
result.

The only way not to throw the exception in the first place is to make 
-valueForKey: return NSNotApplicableMarker. I'd suggest doing this by 
overriding -valueForUndefinedKey:

_______________________________________________

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