I know I\'m not the first to ask this question but I\'m really stumped..
Basically I have a screen with two buttons. Each button loads data into a tableview below based
OK, I did take a quick peek.
You initialize the FRC with:
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:@"startTime.sessionSection"
cacheName:nil];
which tells it that your section titles are to be obtained via the key path startTime.sessionSection
.
Now, the first sort descriptor of a fetch request that is given to a FRC will be used to sort the sections. The sort descriptor you are providing first is for timeValue
which does not seem right.
Your first sort descriptor should specify a sort for your section titles. Change that and you may be good to go.
EDIT
Thanks guys for the info. I'm still a bit lost though. Did you mean that I should add a sort descriptor on startTime.sessionSection before assigning it to the sectionNameKeyPath? I tried, but still no luck. timeValue and startTime.sessionSection are related. Could that be it? – pigeonfactory
You have to make sure that the very first sort descriptor will properly sort your data based on the section. In your case, times are being converted into words. Your initial sort descriptor is for times, and when the data is sorted based on time, the sections are not sorted properly, which is causing your error.
The very first sort descriptor must satisfy the section data. So, initially, I would try...
[fetchRequest setSortDescriptors:@[
[NSSortDescriptor sortDescriptorWithKey:@"startTime.sessionSection"
ascending:NO],
[NSSortDescriptor sortDescriptorWithKey:@"timeValue"
ascending:YES],
[NSSortDescriptor sortDescriptorWithKey:@"title"
ascending:YES] ];
Note, if you have lots and lots of data, you may find that your section mechanism gets slow. If that happens, you may want to add this section data to your database.