Мне нужно показывать сообщения в хронологическом порядке (последние в нижней части), но нужно отображать последние 20, и должна быть кнопка «загрузить старые» в верхней части, чтобы получить более старые.
Но для выборки из основных данных мы могли бы указать дескриптор сортировки, на основе которого он выбирал или более старый, или недавний, проблема в том, что он сортирует в указанном порядке.
т.е. Если я получаю последние сообщения, это сообщение помещается сверху, а не снизу.
Есть ли способ поиска от недавнего к старшему, но показ от старшего к недавнему (хронологический порядок)?
Код:
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES];
дает в хронологическом порядке, но ищет от старого к недавнему.
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:NO];
дает в обратном хронологическом порядке, но ищет от недавнего к старшему.
Мне нужен хронологический порядок, в котором поиск происходит от недавнего к старшему на основе отметки времени.
Подробнее код:
-(void) loadMoreContent{ // to load older messages
numberOfCells += 10; //number of rows
int tempNumofCells=(signed)[self.group.messages count]; // total number of messages
if (tempNumofCells-numberOfCells >=0) { // number of cells that we are showing is lesser
;
}
else numberOfCells = tempNumofCells;
//--making a performFetch Request to fill up above cells--
NSError* error;
if (![self.fetchedResultsController performFetch:&error]) {
exit(-1); // Fail
}
}
- (NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil) {
//change the fetchRequest (fix for a bug result of constant fetched objects from fetchedController)
if (((signed)[self.group.messages count] - numberOfCells) > 0) {
[_fetchedResultsController.fetchRequest setFetchOffset:[self.group.messages count] - numberOfCells];
}
else [_fetchedResultsController.fetchRequest setFetchOffset:0];
return _fetchedResultsController;
}
.
.
.
}
...
'setFetchOffset' сработал, потому что я говорю fetchedController для выборки сообщений из указанного индекса (который установлен в loadMoreContent ()), снова число numberOfRows таблицы определяется переменной numberOfCells и fetchedResults fetchedController.
Спасибо ..