Базовые данные ожидают, что вы определите собственную сортировку с помощью NSSortDescriptors, поэтому вам придется добавить свой собственный атрибут для отслеживания настраиваемого пользователем индекса заказа, подобного этому. Мне посчастливилось использовать KVO в ключевом пути отношений сущности (изнутри самого управляемого объекта), чтобы при необходимости изменить порядок при добавлении или удалении новых объектов отношений.
Чтобы выполнить перестановку, вам понадобятся методы перетаскивания NSTableView и при необходимости сбросьте атрибут индекса заказа. Документация NSTableView должна объяснить это очень хорошо.