开发者

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

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, an开发者_JAVA百科d 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:

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜