First off I want to say that I am not using threads or multiple contexts and I have read and worked from every related answer I could find on SO. I have a project which I have a
Have you tried setting the merge policy on your managed object context?
The default is NSErrorMergePolicy
which will just throw errors. Your other options are here.
I'd suggest this one :
[self.managedObjectContext setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy];
Just noticed something that might be causing problems in your swapping tracks code.
Instead of
OT_Track *track;
track = [[self.tracksArray objectAtIndex: fromIndexPath.row] retain];
[self.tracksArray removeObjectAtIndex: fromIndexPath.row];
[self.tracksArray insertObject:track atIndex: toIndexPath.row];
[track release];
try the code snippet from this blog post.
I think that your track swapping code might be getting indexes confused halfway through the swap.