Normally Core Data uses a NSSet. If the order matters though one could opt for an NSOrderedSet. I was wondering what would be faster: - uses NSSet and add an ID to each element. Use NSPredicate to sort them. Adding elements would require altering the ID of some elements. - use NSOrderedSet. Unsure how an element is inserted at a specific row in Core Data however when the set is ordered.