I’m using Core Data to cache a decent amount of information, and I have a To-Many relationship set up among my managed objects. Naturally I use an NSFetchRequest to fetch an array of the singular side of that relationship. However, I populate a UITableView using the the “many” side of the relationship, and I’d like it to be sorted alphabetically when I pull the data.
If I’m not being clear, here’s an example:
“employee” and “boss” are both NSManagedObjects in a To-Many relationship – each boss has many employees, but employees only have one boss. After retrieving an array of bosses, I push a UITableViewController containing a list of employees. I’d like the employees to be pre-sorted during the NSFetchRequest to make displaying them easier. Is this possible, and how would I go about doing it?
Why not fetch from the reverse? I assume you already know the unique id of the boss you’re interested in, so you could build a predicate like this one:
That should fetch out any employee with a matching bossId, you can then add a sort descriptor to that fetch request to sort alphabetically.
Alternatively you could grab the array of NSManagedObject instances that you fetch out in your current implementation, and sort them using a sort descriptor (assumes your employees name is at the property “name”):
Now populate your tableview using “sorted”.
Note:
I’m a little confused about why you’re not using an NSFetchedResultsController for this, as it would take care of sectioning for you as well.