Is it possible to have Core Data sort the “many” part of a To-Many relationship during a fetch request?

自闭症网瘾萝莉.ら 提交于 2019-12-22 17:59:32

问题


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?


回答1:


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:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"boss.bossId == %K", bossId];
NSFetchRequest *req = [[NSFetchRequest alloc] init];
[req setEntity:employeeEntity];
[req setPredicate:pred];

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"):

NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YESorNO];
NSArray *sorted = [entities sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]];

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.



来源:https://stackoverflow.com/questions/4003659/is-it-possible-to-have-core-data-sort-the-many-part-of-a-to-many-relationship

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!