gpt4 book ai didi

objective-c - OSX - 使用多个表格 View - 如何检查单元格越界

转载 作者:行者123 更新时间:2023-12-03 17:53:47 25 4
gpt4 key购买 nike

NSTableView 中选择一行时,我在 objectValueForTableColumn 中遇到异常,该异常超出了 numberOfRowsInTableView

我认为这可能是由于使用单一方法控制多个 TableView 造成的,但我不知道该怎么做。

numberOfRowsInTableView 看起来像这样:

    switch (tableView.tag) {
case 0:
return [itemMutableArray count];
break;

case 1:
return [categoryMutableArray count];
break;

case 2:
return [peopleMutableArray count];
break;

...

并且 objectValueForTableColumn 方法如下所示:

if (tableView.tag == 0) {
currentItem = [itemMutableArray objectAtIndex:row];
NSString *itemName = [currentItem valueForKey:@"title"];
return itemName;
}

if (tableView.tag == 1) {
currentCategory = [categoryMutableArray objectAtIndex:row];
NSString *catName = [currentCategory valueForKey:@"name"];
return catName;
}

如果我先点击出界,没问题。但是当我单击一行,然后单击越界时,我收到以下日志:

2013-06-18 13:40:16.169 TestApp[43953:303] -[MainWindowController tableViewSelectionDidChange:]
2013-06-18 13:40:16.169 TestApp[43953:303] Items Table View
2013-06-18 13:40:17.641 TestApp[43953:303] -[MainWindowController tableViewSelectionDidChange:]
2013-06-18 13:40:17.641 TestApp[43953:303] Items Table View
2013-06-18 13:40:17.642 TestApp[43953:303] *** -[__NSArrayM objectAtIndex:]: index 18446744073709551615 beyond bounds [0 .. 6]
2013-06-18 13:40:17.643 TestApp[43953:303] (
0 CoreFoundation 0x00007fff8574e8ce __exceptionPreprocess + 174
1 libobjc.A.dylib 0x00007fff8b4e7f51 objc_exception_throw + 43
2 CoreFoundation 0x00007fff856ea615 -[__NSArrayM objectAtIndex:] + 245
3 TestApp 0x0000000100007508 -[MainWindowController tableViewSelectionDidChange:] + 760
4 CoreFoundation 0x00007fff856ffa63 _CFXNotificationPost + 3203
5 Foundation 0x00007fff8d25c24a -[NSNotificationCenter postNotificationName:object:userInfo:] + 68
6 AppKit 0x00007fff8f7fdfc5 -[NSTableView _sendSelectionChangedNotificationForRows:columns:] + 177
7 AppKit 0x00007fff8f7e3f2a -[NSTableView _enableSelectionPostingAndPost] + 406
8 AppKit 0x00007fff8fbbc7e0 -[NSTableView mouseDown:] + 5588
9 AppKit 0x00007fff8f780918 -[NSWindow sendEvent:] + 11303
10 AppKit 0x00007fff8f77af48 -[NSApplication sendEvent:] + 2021
11 AppKit 0x00007fff8f69c599 -[NSApplication run] + 646
12 AppKit 0x00007fff8f646563 NSApplicationMain + 940
13 TestApp 0x0000000100015982 main + 34
14 libdyld.dylib 0x00007fff8f28e60d start + 1
)

最佳答案

我的建议是转到调试器并为异常设置断点,然后在应用程序终止之前查看变量。

要为异常设置断点,请切换到调试器 View 并单击左下角的“+”号。这将为您提供一个菜单,可以选择异常断点或符号断点。

另一方面,与调试器相比,崩溃日志提供了不同的信息。但即便如此,如果您阅读堆栈跟踪,您可以看到崩溃发生在 tableViewSelectionDidChange: 中,因此也许首先查看那里会更相关。

关于objective-c - OSX - 使用多个表格 View - 如何检查单元格越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17166235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com