What does the `ordered` flag do in a to-many relationship?

While looking for ways to add an ordered to-many relationship to my Core Data model, with the least possible amount of changes to the model, I noticed an option of the to-many relationship that says ordered (see screenshot below). Wow, sounds great, but what does it do?

My SQLite store is not complaining when I check or uncheck it, and my app still compiles and runs fine too. I was thinking maybe the lightweight migration takes care of the change, but from the looks of it, all my custom NSManagedObject subclasses work without the need for modification too, so what’s going on?

  • UITableView reorder like Clear app
  • Swift - what determines the order of a Dictionary Collection?
  • How can I sort multiple arrays based on the sorted order of another array
  • iOS - Allow default row movement in `UITableView` without editing mode
  • Keeping dictionary keys of JSON Object in order in Objective C
  • NSDictionary allKeys order
  • Screenshot of the Xcode 4 Data Model Inspector

    To summarize the questions:

    • Should that ordered flag change the to-many relationship’s data type from NSSet to NSArray?
    • Or is it just that the order in which the set is modified, will persist on sequential reads and writes?
    • Or am I wrong with my assumptions and is it something else entirely?
    • Is there an Apple doc page where this feature is described?

    Many thanks!

    Solutions Collect From Internet About “What does the `ordered` flag do in a to-many relationship?”

    Ordered relationships allow you to assign an arbitrary ordering to related objects. You can think of this as ordering colors from your most to least favorite, rather than sorting by date, title, etc.

    Before this feature was added ordering was implemented by creating a position attribute, then manually updating the position indexes for items whenever the user reordered them. If you have a large number of items, using the built in ordering can be more expensive than implementing this manually, as described above.