Проблемы при снятии флажков внутри связанных столбцов NSTableview

Я использую этот проект, созданный aneesh171, который показывает создание флажков внутри NSTableView и способ их привязки. Я новичок в разработке OSX и пытаюсь понять, как это работает.

Проект в основном представляет собой флажки внутри столбца NSTableView, который привязан к контроллеру массива.

По какой-то причине, когда я снимаю один из этих флажков, в окне консоли появляются следующие сообщения:

2014-04-03 04:22:55.579 MyApp[5735:303] Error setting value for key path objectValue.selected of object <NSAutounbinder: 0x600000258120 - a nonretaining proxy for <NSTableCellView: 0x60000019f890>> (from bound object <NSButton: 0x60000015efb0>): [<__NSDictionaryI 0x61000006f540> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key selected.
2014-04-03 04:22:55.581 MyApp[5735:303] (
    0   CoreFoundation                      0x00007fff87b3a25c __exceptionPreprocess + 172
    1   libobjc.A.dylib                     0x00007fff8a3f6e75 objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff87b3a038 +[NSException raise:format:arguments:] + 104
    3   AppKit                              0x00007fff927936c5 -[NSBinder _setValue:forKeyPath:ofObject:mode:validateImmediately:raisesForNotApplicableKeys:error:] + 837
    4   AppKit                              0x00007fff92793327 -[NSBinder setValue:forBinding:error:] + 245
    5   AppKit                              0x00007fff92c8b4ee -[NSValueBinder _applyObjectValue:forBinding:canRecoverFromErrors:handleErrors:typeOfAlert:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:] + 194
    6   AppKit                              0x00007fff92c8b871 -[NSValueBinder applyDisplayedValueHandleErrors:typeOfAlert:canRecoverFromErrors:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:error:] + 621
    7   AppKit                              0x00007fff927c5107 -[NSValueBinder performAction:] + 288
    8   AppKit                              0x00007fff927c4fc5 -[_NSBindingAdaptor _objectDidTriggerAction:bindingAdaptor:] + 133
    9   AppKit                              0x00007fff927531a0 -[NSControl sendAction:to:] + 56
    10  AppKit                              0x00007fff9279fced -[NSCell _sendActionFrom:] + 128
    11  AppKit                              0x00007fff927b96c5 -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 2316
    12  AppKit                              0x00007fff927b8a97 -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 487
    13  AppKit                              0x00007fff927b81ad -[NSControl mouseDown:] + 706
    14  AppKit                              0x00007fff92739b48 -[NSWindow sendEvent:] + 11296
    15  AppKit                              0x00007fff926d86e4 -[NSApplication sendEvent:] + 2021
    16  AppKit                              0x00007fff92528b89 -[NSApplication run] + 646
    17  AppKit                              0x00007fff92513913 NSApplicationMain + 940
    18  MyApp                               0x0000000100049132 main + 34
    19  libdyld.dylib                       0x00007fff85ffe5fd start + 1

Когда флажок установлен, это сообщение не отображается на консоли.

Можете ли вы, ребята, сказать мне, что не так?


person Duck    schedule 03.04.2014    source источник


Ответы (1)


Я обновил git-версию проекта.

Всякий раз, когда вы привязываете элемент управления через привязку значения, он вызывает свой метод получения для загрузки значений. тогда как, когда вы пытаетесь изменить эти значения, он попытается вызвать метод установки свойства. В проекте словари были жестко закодированы, поэтому не было метода установки, и именно по этой причине вы получили «Значение ошибки установки для ключевого пути objectValue.selected».

Проверьте новую версию, в которой была создана FruitModel, которая решает проблему установки.

Дайте мне знать, если у вас возникнут какие-либо проблемы.

person Aneesh Dangayach    schedule 03.04.2014
comment
Мужик, ты фантастический! Я узнал больше из ваших примеров, чем из каждого учебника, который я когда-либо читал об этой теме привязок, табличных представлений и контроллеров массива! Теперь я полностью все понял! БЛАГОДАРНОСТЬ!!!!!!!!!! - person Duck; 03.04.2014