2013-05-09 25 views
0

所有。當我使用NSTableView的時候,只要它到達這個函數就會給我下面的錯誤。NSTableView的錯誤 - [__ NSCFConstantString SETFRAME:]

-(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

「它必須在OS X 10.5下運行...」然後你不應該使用基於視圖的表格視圖。那些是在Lion中引入的(10.7)。它們不適用於Leopard(10.5)或Snow Leopard(10.6)。 – 2013-05-09 07:37:11

回答

3

的方法,的tableView:viewForTableColumn:行:需要返回的NSView或的NSView的子類。它看起來像[usbInfor valueForKey:identifier],其中identifier是「name」,返回一個字符串([mountPath substringFromIndex:9])。我不知道你在那裏試圖做什麼,但這顯然是錯誤的。

+0

謝謝! :) :) :) – 2013-05-09 04:29:57

0

[TableColumn的標識符]用於標識列名。所以它應該像

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; 
} 

...