Я использую представление NSOutlineView, и я хочу связать NSSlider и NSTextfield с ключом NSDictionary (@ "" duration "). Словарь является свойством моего подкласса NSTableCellView. Я столкнулся с ошибкой при попытке настроить привязка:
Ошибка :
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSApplication 0x100506400> addObserver:<NSTextValueBinder 0x102609a90> forKeyPath:@"info.duration" options:0 context:0x10260c820] was sent to an object that is not KVC-compliant for the "info" property.'
.h:
#import <Cocoa/Cocoa.h>
@interface ObjectFileTableCellView : NSTableCellView {
NSTextField *_textFieldFilePath;
NSTextField *_textFieldDesription;
NSButton *_checkBox;
NSDictionary* _info;
NSSlider* _slider;
NSTextField* _labelStartTime;
}
@property(retain) IBOutlet NSTextField *textFieldFilePath;
@property(retain) IBOutlet NSTextField *textFieldDescription;
@property(retain) IBOutlet NSTextField *labelStartTime;
@property(retain) IBOutlet NSSlider *slider;
@property(retain) IBOutlet NSButton *checkBox;
@property(retain) NSDictionary* info;
@end
.m:
- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item{
if ([[tableColumn identifier] isEqualToString:@"Files"]) {
if ([item isKindOfClass:[OMN_Object class]])
{
// ВЫПОЛНЕНО - (NSView *) outlineView: (NSOutlineView *) OutlineView viewForTableColumn: (NSTableColumn *) tableColumn item: (id) item {if ([[tableColumn identifier] isEqualToString: @ "Files"]) {
if ([item isKindOfClass:[OMN_Object class]])
{
OMN_Object *o = item;
ObjectFileTableCellView *v = [outlineView makeViewWithIdentifier:@"FileCell" owner:self]; // File'S owner
hide = NO;
NSString* d = [o.fileInfoDetails valueForKey:@"duration"];
[v.slider setMinValue:0];
[v.slider setMaxValue:[d doubleValue]];
NSString *val = [NSString stringWithFormat:@"%f", v.slider.doubleValue];
[v.labelStartTime setStringValue:val];
[o.fileInfoDetails setValue:val forKey:@"startTime"];
v.info = o.fileInfoDetails;
...
Мое представление NSOutlineView:
NSTableColumn:
Настройка привязки NSTextField:
Желаемый результат:
Как настроить привязку, чтобы получить то, что я хочу?