2011-03-27 47 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]; 


 

我希望這是好的。請讓我知道如果我可以做得更好