Setting up a "To Many" relationship in CoreData and ticking the "Ordered" box defines your attribute as a NSOrderedSet.
Is there an efficient way to insert an object at a specific position or to move an object up and down?
Or do I need to create a NSMutabledOrderedSet with the data from the NSOrderedSet, insert or move my objects and then convert it back to NSOrderedSet?
Or should I use a standard NSSet and manage a 'position' attribute myself?
CoreData 'Create NSManagedObject Subclasses...' will generate a lot of methods for you to use to manipulate your ordered set. Or you can do the same with Codegen.
Objective C
Swift
Otherwise yes just make a mutable copy, manipulate as necessary, then set it back into the NSManagedObject. btw, you don't need to convert it back to a non-mutable set either