Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何单击NSTableView中的复选框并使用KVC更新对象?还是个问题_Objective C_Cocoa - Fatal编程技术网

Objective c 如何单击NSTableView中的复选框并使用KVC更新对象?还是个问题

Objective c 如何单击NSTableView中的复选框并使用KVC更新对象?还是个问题,objective-c,cocoa,Objective C,Cocoa,几天前,我发布了在nstableview()中使用复选框的问题。彼得·霍西帮助了我,但我仍然无法让它发挥作用。我似乎在实现一个应该简单明了的按钮时犯了很大的错误。我有一个具有三个字段的桌面视图;bool、text和text。每列的值都绑定到我的arraycontroller。这在开始时工作正常,表格很好地填充,所有复选框都设置为on。当我尝试单击任何复选框并将其设置为关闭时,应用程序崩溃。复选框的值是对象的布尔属性,单击复选框应更改属性值并将其存储。我想我可以使用KVC实现这一点,其中对象存储在

几天前,我发布了在nstableview()中使用复选框的问题。彼得·霍西帮助了我,但我仍然无法让它发挥作用。我似乎在实现一个应该简单明了的按钮时犯了很大的错误。我有一个具有三个字段的桌面视图;bool、text和text。每列的值都绑定到我的arraycontroller。这在开始时工作正常,表格很好地填充,所有复选框都设置为on。当我尝试单击任何复选框并将其设置为关闭时,应用程序崩溃。复选框的值是对象的布尔属性,单击复选框应更改属性值并将其存储。我想我可以使用KVC实现这一点,其中对象存储在nsmutablearray中(我不使用核心数据),并定义:

@property(readwrite) BOOL doSync; //(interface)
@dynamic doSync; // implementation
我确信我做了一些根本错误的事情,但即使在阅读了所有我能从网上或书中找到的文献之后,我也无法找到这个错误。单击复选框后,如何设置doSync属性的值? 我使用调试器运行程序,崩溃报告的顶部如下所示:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000060
Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
0   com.apple.CoreData              0x00007fff8607b73b _propertyAtIndexForEntityDescription + 11
1   com.apple.CoreData              0x00007fff860b83c2 -[NSManagedObject validateValue:forKey:error:] + 98
2   com.apple.Foundation            0x00007fff880ea3cf -[NSObject(NSKeyValueCoding) validateValue:forKeyPath:error:] + 254
3   com.apple.AppKit                0x00007fff83d4ec01 -[NSBinder _setValue:forKeyPath:ofObject:mode:validateImmediately:raisesForNotApplicableKeys:error:] + 196
4   com.apple.AppKit                0x00007fff83df7855 -[NSBinder setValue:forBinding:atIndex:error:] + 492
5   com.apple.AppKit                0x00007fff83d66b33 -[_NSValueBinderPlugin applyObjectValue:forBinding:operation:needToRunAlert:error:] + 423
6   com.apple.AppKit                0x00007fff84140ec5 -[NSValueBinder _applyObjectValue:forBinding:canRecoverFromErrors:handleErrors:typeOfAlert:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:] + 116
7   com.apple.AppKit                0x00007fff84140d2c -[NSValueBinder applyDisplayedValueHandleErrors:typeOfAlert:canRecoverFromErrors:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:] + 567
8   com.apple.AppKit                0x00007fff83d66556 -[NSValueBinder performAction:] + 300
9   com.apple.AppKit                0x00007fff83d663e3 -[_NSBindingAdaptor _objectDidTriggerAction:bindingAdaptor:] + 136
10  com.apple.AppKit                0x00007fff83d6632d -[_NSBindingAdaptor objectDidTriggerAction:] + 218
11  com.apple.AppKit                0x00007fff83cda092 -[NSControl sendAction:to:] + 63

我将非常感谢任何链接到我可能看到的示例,以及关于如何解决此问题的评论。我感谢你们的耐心,希望你们中的一些人能帮助我

结果是我没有正确访问我的对象,因此导致我的setter崩溃。此外,我认为我对使用数据源和使用KVC的绑定之间的区别一无所知,并将它们混为一谈。所以我重新开始,删除了复选框,创建了一个名为checkbox的新列。然后,我创建了NSCell的一个子类,它根据我使用KVC接收的对象值控制和绘制每一行。现在二传手也工作得很好。谢谢你的帮助