Дух .. Я думаю, что нашел окончательное решение ..
Выбор довольно прост:
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Performance" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort1 = [[NSSortDescriptor alloc]
initWithKey:@"location.name_extern" ascending:YES];
NSSortDescriptor *sort2 = [[NSSortDescriptor alloc]
initWithKey:@"start" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObjects:sort1,sort2,nil]];
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:@"location.name_extern"
cacheName:nil];
Со следующим предикатом:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"end > %@",selectedTime];
[fetchRequest setPredicate:predicate];
И вот как я решил часть "только 2 на местоположение / секцию":
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
if (selectedTime == nil)
{
return [sectionInfo numberOfObjects];
}
else
{
if ([sectionInfo numberOfObjects] > 2)
{
return 2;
}
else
{
return [sectionInfo numberOfObjects];
}
}
}
Спасибо, что попробовали Андре!