Cocoa 关于NSoutlineView和WriteItem的拖放问题

Cocoa 关于NSoutlineView和WriteItem的拖放问题,cocoa,macos,drag-and-drop,objective-c++,nsoutlineview,Cocoa,Macos,Drag And Drop,Objective C++,Nsoutlineview,要处理拖放,请执行以下操作: -(void)InitMyOutlineView{ - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - -- -- - - - - - - - - [pMyOutlineView registerForDraggedTypes: [NSArray arrayWithObject:NSStringPboardType]]; /* I tried both

要处理拖放,请执行以下操作:

-(void)InitMyOutlineView{
 - - - - -  - - - - - - - -  -- - - - - - - -  -
 - - - - - - - - - - - - - -- -- - - - - - - - - 
[pMyOutlineView registerForDraggedTypes:
     [NSArray arrayWithObject:NSStringPboardType]];

/* I tried both Yes and No */   
[pMyOutlineView setDraggingSourceOperationMask:NSDragOperationEvery forLocal:NO];
- - - -  -- - - - - - -- - - - - - - -- - - - - - 
- -- -- - - - - -- - - - - - - - - - -  - -- - - - 
}
WriteItem方法如下所示

- (BOOL)outlineView:(NSOutlineView *)outlineView writeItems:(NSArray *)items toPasteboard:(NSPasteboard *)pboard{
    [self log:@"write Items"];
    NSString *pStr = [NSString stringWithFormat:@"this is the temp string "];
       [pboard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:self];
       [pboard setString:pStr forType:NSStringPboardType];
       [self log:@"returning YES"];
       return YES;
}
现在,我希望控件将到达AcceptDrop方法,但断点并没有到达那个里,在Log/gdb中得到下面的日志

2011-02-04 16:21:25.435 MyApp[2006:a0f] write Items
2011-02-04 16:21:25.437 MyApp[2006:a0f] returning YES
2011-02-04 16:21:25.439 MyApp[2006:a0f] *** -[NSCFArray initWithObjects:count:]: attempt to insert nil object at objects[0]
而对照组并没有采用这种方法

当我启用“异常时停止”时,以下是停止时的调用堆栈

#0  0x981b94e6 in objc_exception_throw
#1  0x96ed34cf in -[__NSPlaceholderArray initWithObjects:count:]
#2  0x96efaaa3 in +[NSArray arrayWithObject:]
#3  0x92316dfd in -[NSOutlineView _columnsForDragImage]
#4  0x923f1e32 in -[NSTableView _doImageDragUsingRowsWithIndexes:event:pasteboard:source:slideBack:startRow:]
#5  0x91fea16a in -[NSTableView _performDragFromMouseDown:]
#6  0x91fe89b9 in -[NSTableView mouseDown:]
#7  0x91fe864e in -[NSOutlineView mouseDown:]
#8  0x91f86c68 in -[NSWindow sendEvent:]
#9  0x91e9f817 in -[NSApplication sendEvent:]
#10 0x91e332a7 in -[NSApplication run]
#11 0x91e2b2d9 in NSApplicationMain
让我再更新一件事,在我的大纲视图中,我有自定义单元格,它只是我正在使用的Mac ImageTextCell接口文件

谁能告诉我,我做错了什么

问候
Rohan

确保在Xcode的调试菜单中打开了“停止Objective-C异常”,然后在调试器下运行应用程序(启用断点)。当抛出异常时,调试器将停止,然后您可以调查尝试使用
nil
对象创建数组的位置


我发现您显示的代码不太可能是问题的根源,因为您正在传递一个在AppKit框架中全局定义的字符串。

[myoutlineView SetOutlineColumn:firstColumn]缺失,
当我添加它的起始工作时

我试图拖动一行,这是否意味着,在WriteItem中,我需要存储与该行关联的自定义单元格