我需要按照时间顺序(最新的底部)顺序显示消息,但是需要显示最后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变量和fetchedController的fetchedResults决定。
谢谢..
答案 0 :(得分:0)
假设您从数据库中获取数据,然后将其存储在模型中的数组中,那么您可以按照所需的日期顺序对该数组进行排序,并将其存储在模型中,为您的tableview做好准备。
或者在cellForRowAtIndexPath
中,而不是返回位置indexRow
处的对象,返回数组中位于(arrayLength - indexRow)
位置的对象,该对象将以相反的方向返回。