首页 > 解决方案 > 在Objective-C中使用reloadData从NSArray加载Tableview时放置NSSort描述符的位置

问题描述

我从 NSArray 而不是 NSFetchedResultsController 加载表视图。当我想使用 NSFetchedResultsController 对表进行排序或过滤时,我只需将排序逻辑放在 -NSFetchedResultsController 委托方法中。

但是,在本例中,我想使用 reloadData 对显示数组的 tableview 进行排序。我知道 reloadData 调用 cellForRowAtIndexPath 方法。那是我应该尝试放置排序逻辑的地方吗?

由于我认为您不能修改委托方法的签名,因此我想我必须有一个实例变量携带要执行的排序类型,并在咨询它之后,对 CellForRowAtIndexPath 开头的数组进行排序,这样可能会起作用,但是看起来很笨拙。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if ([self.sortType intValue==1) {
NSSortDescriptor *sd = [[NSSortDescriptor alloc] initWithKey:@"lastName" ascending:YES];
data = [data sortedArrayUsingDescriptors:@[sd]];
} 
//get cell
//assign object in data array to cell
}

这是进行排序的正确方法还是有更好的方法?

标签: iosarraysnssortdescriptor

解决方案


推荐阅读