Q:

Saving updated rows position after tableview re arranging

Re arranging UItableview rows works as expected 
-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {

    [self.circuits exchangeObjectAtIndex:sourceIndexPath.row withObjectAtIndex:destinationIndexPath.row]; // Self circuits is array for table view

    [self.appDelegate saveContext]; // Core data save method

}

The issue is: On reload, the positions are not saved
Im not sure if this is because im not saving the  core data correctly,  although [self.appDelegate saveContext]; should update this, or i'm not sorting the array when the rows have been repositioned. 
Loading data for the table view:
@property (nonatomic, strong) NSMutableArray *circuits;
- (void)loadData
{
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"createdAt" ascending:YES];
    NSArray *sortDescriptors = @[sortDescriptor]; 
    self.circuits = [[self.distributionBoard.circuits sortedArrayUsingDescriptors:sortDescriptors] mutableCopy];
}

Just a note: If I change my NSSortDescriptorto modifiedAt rather than createAt this has no effect on the sorting order
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"modifiedAt" ascending:YES];
    NSArray *sortDescriptors = @[sortDescriptor]; 
    self.circuits = [[self.distributionBoard.circuits sortedArrayUsingDescriptors:sortDescriptors] mutableCopy];

EDIT: Showing delete objects from the core data model
[self.managedObjectContext deleteObject:(self.circuits)[indexPath.row]];
 [self.appDelegate saveContext];
 [self.circuits removeObjectAtIndex:indexPath.row];
 [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

A:

At the moment your array and sort order are completely dissociated from any table view changes you make. Reordering the array doesn't change any of the objects in the context so it won't be dirty and won't save. This is why neither sort order works.
If you edited something on the objects your modified date sort would show a change, but you'd have to edit many objects to get the new order.
Really each of your objects should have an order or some other attribute that you sort on (stored in the core data model). When the user changes the order in the table you need to update those attributes and save the context. When you insert objects you need to add a value to ensure the new item is at the end of the list. When you delete an item you need to decide whether you modify all the values to fill the gap or how you keep track of the current highest value for when you insert...

