NSOutlineView拖放:如何防止父项被丢弃在其中一个子项上

时间:2011-10-29 19:21:01

标签: cocoa core-data drag-and-drop nsoutlineview

我正在为我的NSOutlineView设置拖放功能,我希望防止父母被丢弃在他们的一个孩子身上。父母和子女都是集团实体。我知道我需要在outlineView:validatedrop方法中执行此操作。我想我需要用NSPredictate创建一个NSFetchRequest来获取父级的所有子级,但我不知道谓词应该是什么。

编辑:它应该是递归的,所以它也应该让孩子的孩子,如果有的话。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

- (NSDragOperation)outlineView:(NSOutlineView *)ov validateDrop:
(id <NSDraggingInfo>)info proposedItem:(id)item proposedChildIndex:(NSInteger)childIndex;

在上述方法中,您可以管理可以或不可以接受的拖动项目。请返回NSDragOperationNone,表示防止掉线。

答案 1 :(得分:0)

解决:

不是挖掘核心数据对象,而是在Apple的sample code之后查看NSTreeNodes。

Bindings负责更新底层核心数据模型。再一次,如果它看起来太复杂,那可能不是正确的方法。