2011-03-27 46 views
0

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

我想我的排序数组中的tableview,所以他们不会列出像这样:

  • d
  • 一个
  • ˚F
  • 小号

,但是代之以这样列出:

  • 一个
  • Ç
  • d
  • Ë
  • 等...

我怎样才能做到这一点?

这里是我的数组:

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

如何加载阵列到我的tableview阵列? 加载数组:

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

阅读API文档NSMutableArray - 有排序方法。或谷歌“排序nsmutablearray”。 – occulus 2011-03-27 02:16:43

回答

4

使用[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]; 
} 
+0

你是什么意思,“做你想要在t1和t2之间进行的测试,以及”?我应该做什么测试?对不起,如果它的一个愚蠢的问题 – 2011-03-27 02:23:04

+0

@帕特里克R:这取决于你想要排序的东西。如果您对字符串进行排序,请调用[t1 compare:t2],如果您测试整数,则测试t1 == t2,如果您测试自定义对象,则只有您知道必须测试的内容,如t1.age和t2。年龄,... – Oliver 2011-03-27 02:28:03

+0

@Patrick R:比较函数将被自动调用多个数组对值,直到整个事物被排序。你只需要测试并返回2个参数如何相互排序 – Oliver 2011-03-27 02:31:17

2

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

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

+0

谢谢,生病看看它:) – 2011-03-27 14:15:48

0

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

这里的记录是NSMutableArray。 列名在你想要分类的哪个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]; 


 

我希望这是好的。请让我知道如果我可以做得更好