Проблемы при снятии флажков внутри связанных столбцов NSTableview
Я использую этот проект, созданный Aneesh Dangayach, который показывает создание флажков внутри 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
Когда флажок установлен, это сообщение не отображается на консоли.
Ребята, скажите, что не так?
1 ответ
Я обновил git-версию проекта.
Всякий раз, когда вы связываете элемент управления через привязку значений, он вызывает его метод получения для загрузки значений. тогда как при попытке изменить эти значения он попытается вызвать метод установки свойства. В проекте словари были жестко закодированы, поэтому не было никакого метода установки, и именно поэтому вы получили "Значение установки ошибки для ключевого пути objectValue.selected".
Проверьте новую версию, где была создана FruitModel, которая решает проблему с сеттером.
Дайте мне знать, если у вас возникнут проблемы.