This is an example showing how two create a two level NSOutlineView with Drag & Drop reordering. I wanted to create an example that was as simple as possible so that it is a little more clear what is going on.
The Apple example DragNDropOutlineView is very complex and was written in Objective-C rather than Swift. This example also uses the NSOutlineView in “View” rather than “Cell” mode. Source code is available at https://github.com/KinematicSystems/NSOutlineViewReorder