2012-04-13 67 views
0

我做了一個計算氣體消耗的小程序。 每個數據條目都有一個視圖控制器,用於計算最終視圖控制器中的消耗量。 因此,您在第一個控制器中輸入驅動距離,在下一個控制器中加入氣體。在顯示結果的控制器中,也會添加當前日期。 所有條目都以字符串的形式存儲在plist文件中,以便稍後使用tableviews(日期除外)。排序數組包含數組ios

現在我想在摘要視圖控制器中打開這個數據來填充tableview。

目前我有檢索來自plist文件3門陣列(類似於表的列): 陣列1:的NSDate 陣列2:的NSString表示多個 陣列3:的NSString表示多個

我知道如何填充我的tableview,但我無法將頭圍繞排序。 我試着將列方法改爲基於表格行的方法,從每個數組中獲取每一個元素,並將它們添加到一個新數組中,每個元素包含一個日期和兩個數字(如字符串)。

我試着設置sortdescriptors,我嘗試使用選擇器,但它似乎我不完全理解如何工作它。就個人而言,我更喜歡示例,所以我一直在尋找關於這個主題的教程。開發者紀錄片沒有那麼多幫助。

我不希望爲這個問題得到一個完整的例子,但也許有一些關於如何安排我的數據和什麼最好用來排序整個數據數組的指針。

感謝任何指針或例子。

編輯: 我終於把所有的「表格行」都當成了「行」。現在我可以通過列的鍵來訪問單列。這還允許使用sortdescriptor對字典數組中的字符串進行升序或降序排序。

這可能不是最優雅的方法,但我想我現在可以做我想做的。 打擾「表」比較,但我覺得這更容易掌握。

如果任何人有指向良好的數組教程,我會更感激。

回答

2

我不是你想如何排序是很清楚,但也許你能適應這個東西(每個排序字典的數組與值類型的NSNumber的關鍵@「行」) -

首先,做一個比較結果函數:

static NSComparisonResult compareRowNumbers(NSDictionary *dict1, NSDictionary *dict2, void * context) { 

    if ([[dict1 objectForKey:@"row"] intValue] < [[dict2 objectForKey:@"row"] intValue]) {return NSOrderedAscending;} 
    if ([[dict1 objectForKey:@"row"] intValue] > [[dict2 objectForKey:@"row"] intValue]) {return NSOrderedDescending;} 

    return NSOrderedSame; 

} 

然後你可以使用它像這樣 -

NSMutableArray *myArray = [NSMutableArray array]; 

// populate your array with loads of stuff (in this case, NSDictionaries as decribed above) 
// now sort it 

[myArray sortUsingFunction:compareRowNumbers context:NULL]; 

...和你的陣列是自動排序。

+0

我想我可以用你的答案來實際排序我的數組日期。但我發現了困難的方式如何做到這一點,並最終找到了我在此之前發現的:http://stackoverflow.com/questions/7507457/sort-array-of-dictionaries-by-nsdate因此,也許通過閱讀進入鏈接,我越來越清楚自己需要什麼。請原諒我之前可能不好的解釋,但去年十月我開始從頭開始編寫程序,而且我還在學習。下次我需要比較單個元素時,我會嘗試您的答案。但是謝謝。 – Mike73 2012-04-17 15:44:27