在tableview中排序数组

Posted

技术标签:

【中文标题】在tableview中排序数组【英文标题】:sorting array in tableview 【发布时间】:2011-03-27 02:02:34 【问题描述】:

我有一个数组和一个从数组中获取数据的表视图。当我在 iPhone 上查看 tableview 时,它的 ofc 未排序,并且按照我编写的方式列出。

我想在 tableview 中对我的数组进行排序,所以它们不会像这样列出:

D 一个 G F S

但改为这样列出:

一个 B C D E 等等……

我该怎么做?

这是我的数组:

stationList = [[NSMutableArray alloc] init];
[stationList addObject:@"A"];
[stationList addObject:@"B"];
[stationList addObject:@"C"];

如何将数组加载到我的 tableview 数组中? 加载数组:

NSString *cellValue = [stationList objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;

【问题讨论】:

阅读 NSMutableArray 的 API 文档 - 有排序方法。或 Google 搜索“排序 nsmutablearray”。 【参考方案1】:

使用[stationList sortUsingFunction:compareLetters context:whateveryouwant_ornil]

NSComparisonResult compareLetters(id t1, id t2, void* context) 

      do the tests you want beetween t1 and t2, and return the result
      like :

      if (the test) return NSOrderedDescending, NSOrderedAscending or NSOrderedSame

在您的示例中,您应该这样做:

NSMutableArray stationList = [[NSMutableArray array];
[stationList addObject:@"A"];
[stationList addObject:@"B"];
[stationList addObject:@"C"];
[stationList sortUsingFunction:compareLetters context:nil];

NSComparisonResult compareLetters(id t1, id t2, void* context) 
      return [t1 compare:t2];

【讨论】:

“在 t1 和 t2 之间做你想要的测试,并且”是什么意思?我应该做什么测试?对不起,如果这是一个愚蠢的问题 @Patrick R :这取决于您要排序的内容。如果你对字符串进行排序,调用 [t1 compare:t2],如果你测试整数,测试 t1 == t2,如果你测试自定义对象,你是唯一知道必须测试什么的人,比如 t1.age 和 t2。年龄,... @Patrick R :将自动为多对数组值调用比较函数,直到对整个内容进行排序。您只需要测试并返回 2 个参数是如何相互排序的 即时测试字符串.. soo.. 它需要“做 [t1 compare:t2]”?对不起,但我不喜欢objective-c:/ @Patrick R :查看我的编辑。 NSString 之间的比较函数已经返回 NSOrderedDescending、NSOrderedAscending 或 NSOrderedSame。所以很容易。对于这样一个简单的案例,我相信有一种更简单的方法,但是这个方法有效,并且可以重复用于其他类型的内容。你知道 AppKiDo 软件吗?如果你不这样做,你应该看看它,这将是一个很大的帮助。【参考方案2】:

转到下面的教程对NSArray进行排序,他们已经解释了对NSArray进行排序的基本技术。

您也可以下载教程末尾提供的示例代码。 Here is the link.

【讨论】:

【参考方案3】:

您可以使用一些简单的步骤。我正在使用的。我不确定它在内存消耗方面是否完美。但它在我的应用程序中与我一起工作。

这里的记录是 NSMutableArray。 Columnname 在您要排序的哪个 Coulmn 上。就我而言,我有不止一列要排序。排序需要 BOOL 数据。

酸痛后,我正在重新加载我的 TableView。

NSSortDescriptor * frequencyDescriptor = [[NSSortDescriptor alloc] initWithKey:columnName ascending:YES]; NSArray * descriptors = [NSArray arrayWithObjects:frequencyDescriptor, nil]; [record sortUsingDescriptors:descriptors]; [columnName release]; [frequencyDescriptor release]; [myTableView reloadData];

我希望这很好。如果我能做得更好,请告诉我

【讨论】:

以上是关于在tableview中排序数组的主要内容,如果未能解决你的问题,请参考以下文章

按多个数组对 Tableview 行进行排序

Objective-C - tableView,按降序排序JSON数组[重复]

无法重新排序 tableView 单元格图像

按日期快速排序我的tableView

在表格视图中显示时对数组进行排序

如何对tableView中的单元格进行排序?