所有。当我使用NSTableView时,只要它到达此函数,它将给我以下错误。
-(id)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
USBInfor* usbInfor = [_tableContent objectAtIndex:row];
NSString* identifier = [tableColumn identifier];
return [usbInfor valueForKey:identifier];
}
我创建了一个usbInfor类来保存USB的名称,大小,路径和类型。我将这些变量添加到_tableContent NSMutableArray中。
USBInfor *usbinfor = [[USBInfor alloc]init];
usbinfor.name = [mountPath substringFromIndex:9];
usbinfor.path = mountPath;
usbinfor.size = formattingSize;
usbinfor.type = type;
[_tableContent addObject:usbinfor];
我在xib文件中创建了3列,每个标识符的名称与变量名称相同,即名称,路径和大小。
以下是错误:
2013-05-08 22:56:34.157 TESTING[7760:303] -[__NSCFString setFrame:]: unrecognized selector sent to instance 0x10022a3d0
2013-05-08 22:56:34.158 TESTING[7760:303] An uncaught exception was raised
2013-05-08 22:56:34.159 TESTING[7760:303] -[__NSCFString setFrame:]: unrecognized selector sent to instance 0x10022a3d0
2013-05-08 22:56:34.162 TESTING[7760:303] (
0 CoreFoundation 0x00007fff81e8ab06 __exceptionPreprocess + 198
1 libobjc.A.dylib 0x00007fff81a003f0 objc_exception_throw + 43
2 CoreFoundation 0x00007fff81f2140a -[NSObject(NSObject) doesNotRecognizeSelector:] + 186
3 CoreFoundation 0x00007fff81e7902e ___forwarding___ + 414
4 CoreFoundation 0x00007fff81e78e18 _CF_forwarding_prep_0 + 232
5 AppKit 0x00007fff8c456a73 -[NSTableRowData _addViewToRowView:atColumn:row:] + 533
6 AppKit 0x00007fff8c45666f -[NSTableRowData _addViewsToRowView:atRow:] + 151
7 AppKit 0x00007fff8c454c05 -[NSTableRowData _addRowViewForVisibleRow:withPriorView:] + 415
8 AppKit 0x00007fff8c45498a -[NSTableRowData _addRowViewForVisibleRow:withPriorRowIndex:inDictionary:withRowAnimation:] + 272
9 AppKit 0x00007fff8c453c59 -[NSTableRowData _unsafeUpdateVisibleRowEntries] + 740
10 AppKit 0x00007fff8c4537f1 -[NSTableRowData updateVisibleRowViews] + 119
11 AppKit 0x00007fff8c42b87b -[NSTableView viewWillDraw] + 165
12 AppKit 0x00007fff8c3091ed __22-[NSView viewWillDraw]_block_invoke_0 + 307
13 CoreFoundation 0x00007fff81e834a6 __NSArrayEnumerate + 582
14 AppKit 0x00007fff8c308f2d -[NSView viewWillDraw] + 244
15 AppKit 0x00007fff8c3091ed __22-[NSView viewWillDraw]_block_invoke_0 + 307
16 CoreFoundation 0x00007fff81e834a6 __NSArrayEnumerate + 582
17 AppKit 0x00007fff8c308f2d -[NSView viewWillDraw] + 244
18 AppKit 0x00007fff8c393aa5 -[NSScrollView viewWillDraw] + 45
19 AppKit 0x00007fff8c3091ed __22-[NSView viewWillDraw]_block_invoke_0 + 307
20 CoreFoundation 0x00007fff81e834a6 __NSArrayEnumerate + 582
21 AppKit 0x00007fff8c308f2d -[NSView viewWillDraw] + 244
22 AppKit 0x00007fff8c3091ed __22-[NSView viewWillDraw]_block_invoke_0 + 307
23 CoreFoundation 0x00007fff81e834a6 __NSArrayEnumerate + 582
24 AppKit 0x00007fff8c308f2d -[NSView viewWillDraw] + 244
25 AppKit 0x00007fff8c308584 -[NSView _sendViewWillDrawInRect:clipRootView:] + 1525
26 AppKit 0x00007fff8c2d49b1 -[NSView displayIfNeeded] + 1044
27 AppKit 0x00007fff8c391a48 -[NSWindow _reallyDoOrderWindow:relativeTo:findKey:forCounter:force:isModal:] + 1377
28 AppKit 0x00007fff8c391068 -[NSWindow _doOrderWindow:relativeTo:findKey:forCounter:force:isModal:] + 940
29 AppKit 0x00007fff8c390c4f -[NSWindow orderWindow:relativeTo:] + 159
30 AppKit 0x00007fff8c292266 -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 1424
31 AppKit 0x00007fff8c27114d loadNib + 317
32 AppKit 0x00007fff8c270679 +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:] + 219
33 AppKit 0x00007fff8c3c35bc +[NSBundle(NSNibLoading) loadNibFile:externalNameTable:withZone:] + 140
34 AppKit 0x00007fff8c270398 +[NSBundle(NSNibLoading) loadNibNamed:owner:] + 626
35 AppKit 0x00007fff8c26ca2f NSApplicationMain + 398
36 TESTING 0x00000001000012b2 main + 34
37 TESTING 0x0000000100001264 start + 52
)
2013-05-08 22:56:34.164 TESTING[7760:303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString setFrame:]: unrecognized selector sent to instance 0x10022a3d0'
*** First throw call stack:
(
0 CoreFoundation 0x00007fff81e8ab06 __exceptionPreprocess + 198
1 libobjc.A.dylib 0x00007fff81a003f0 objc_exception_throw + 43
2 CoreFoundation 0x00007fff81f2140a -[NSObject(NSObject) doesNotRecognizeSelector:] + 186
3 CoreFoundation 0x00007fff81e7902e ___forwarding___ + 414
4 CoreFoundation 0x00007fff81e78e18 _CF_forwarding_prep_0 + 232
5 AppKit 0x00007fff8c456a73 -[NSTableRowData _addViewToRowView:atColumn:row:] + 533
6 AppKit 0x00007fff8c45666f -[NSTableRowData _addViewsToRowView:atRow:] + 151
7 AppKit 0x00007fff8c454c05 -[NSTableRowData _addRowViewForVisibleRow:withPriorView:] + 415
8 AppKit 0x00007fff8c45498a -[NSTableRowData _addRowViewForVisibleRow:withPriorRowIndex:inDictionary:withRowAnimation:] + 272
9 AppKit 0x00007fff8c453c59 -[NSTableRowData _unsafeUpdateVisibleRowEntries] + 740
10 AppKit 0x00007fff8c4537f1 -[NSTableRowData updateVisibleRowViews] + 119
11 AppKit 0x00007fff8c42b87b -[NSTableView viewWillDraw] + 165
12 AppKit 0x00007fff8c3091ed __22-[NSView viewWillDraw]_block_invoke_0 + 307
13 CoreFoundation 0x00007fff81e834a6 __NSArrayEnumerate + 582
14 AppKit 0x00007fff8c308f2d -[NSView viewWillDraw] + 244
15 AppKit 0x00007fff8c3091ed __22-[NSView viewWillDraw]_block_invoke_0 + 307
16 CoreFoundation 0x00007fff81e834a6 __NSArrayEnumerate + 582
17 AppKit 0x00007fff8c308f2d -[NSView viewWillDraw] + 244
18 AppKit 0x00007fff8c393aa5 -[NSScrollView viewWillDraw] + 45
19 AppKit 0x00007fff8c3091ed __22-[NSView viewWillDraw]_block_invoke_0 + 307
20 CoreFoundation 0x00007fff81e834a6 __NSArrayEnumerate + 582
21 AppKit 0x00007fff8c308f2d -[NSView viewWillDraw] + 244
22 AppKit 0x00007fff8c3091ed __22-[NSView viewWillDraw]_block_invoke_0 + 307
23 CoreFoundation 0x00007fff81e834a6 __NSArrayEnumerate + 582
24 AppKit 0x00007fff8c308f2d -[NSView viewWillDraw] + 244
25 AppKit 0x00007fff8c308584 -[NSView _sendViewWillDrawInRect:clipRootView:] + 1525
26 AppKit 0x00007fff8c2d49b1 -[NSView displayIfNeeded] + 1044
27 AppKit 0x00007fff8c391a48 -[NSWindow _reallyDoOrderWindow:relativeTo:findKey:forCounter:force:isModal:] + 1377
28 AppKit 0x00007fff8c391068 -[NSWindow _doOrderWindow:relativeTo:findKey:forCounter:force:isModal:] + 940
29 AppKit 0x00007fff8c390c4f -[NSWindow orderWindow:relativeTo:] + 159
30 AppKit 0x00007fff8c292266 -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 1424
31 AppKit 0x00007fff8c27114d loadNib + 317
32 AppKit 0x00007fff8c270679 +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:] + 219
33 AppKit 0x00007fff8c3c35bc +[NSBundle(NSNibLoading) loadNibFile:externalNameTable:withZone:] + 140
34 AppKit 0x00007fff8c270398 +[NSBundle(NSNibLoading) loadNibNamed:owner:] + 626
35 AppKit 0x00007fff8c26ca2f NSApplicationMain + 398
36 TESTING 0x00000001000012b2 main + 34
37 TESTING 0x0000000100001264 start + 52
)
libc++abi.dylib: terminate called throwing an exception
必须在OS X 10.5和基础SDK OS X 10.7下运行
谢谢!
答案 0 :(得分:3)
方法,tableView:viewForTableColumn:row:需要返回NSView或NSView的子类。它看起来像[usbInfor valueForKey:identifier],其中identifier是“name”,返回一个字符串([mountPath substringFromIndex:9])。我不知道你在那里做什么,但那显然是错的。
答案 1 :(得分:0)
[tableColumn identifier]用于标识列名。所以它应该像
NSString *filename = [[itemArray1 objectAtIndex:rowIndex] objectForKey:key1a];
NSString *path = [[itemArray1 objectAtIndex:rowIndex] objectForKey:key1b];
NSString *identifier = [tableColumn identifier];
if ([identifier] isEqualToString:@"whatever a column name is"]) {
return filename;
}
else if ([identifier] isEqualToString:@"whatever a column name is"]) {
return path;
}
...