Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Custom sorting using categories and core data - is it supported by the framework?

I'm developing for iPhone iOS 4.0 and I have a list of birthday objects (date + name) stored using Core Data. I want to use the NSFetchedResultsController to retrieve this list sorted by the next birthdate date of each birthday object. For that I need to define my own logic for the sort descriptor.

I tried using:

[NSSortDescriptor sortDescriptorWithKey:@"birthdayDate" 
                              ascending:YES 
                               selector:@selector(compareNextBirthday:)];

Where compareNextBirthday: is defined in a category I created on a NSDate class.

But when I try to fetch the data I get the following error: "unsupported NSSortDescriptor selector: compareNextBirthday:"

I spent hours trying to figure this out without luck... does Core Data support this kind of custom sorting at all? Do I really need to do an in-memory sort?

like image 981
Amir Naor Avatar asked Aug 11 '10 05:08

Amir Naor


1 Answers

Sorting inside of the NSFetchedResultsController is performed at the persistent store level so if you are using SQLite as the backend it will fail.

For something like this I would de-normalize the data and store the month and day of month in addition to the actual birthdate so that you can sort on them.

like image 164
Marcus S. Zarra Avatar answered Sep 30 '22 14:09

Marcus S. Zarra