2011-08-10 37 views
0

我有一個簡單的NSArray具有某些陣列作爲對象,其具有一些日期和字符串作爲對象:按日期:NSArray的與NSArray的與日期 - 對象

  • 的NSArray(主陣列) - - - - ---------->表視圖
    • NSArray的(輔助陣列)--->表視圖細胞
      • 的NSDate ---------------- ----> table view cell text label
      • NSString -------------------> table view cell detail text label

我用的是主陣列爲我的表視圖 - >每個單元有它自己的「二次陣」。 現在我想通過NSDate對象對主數組進行排序。這聽起來很簡單,但我在網上找不到解決方案。

我想過使用NSSortDesriptors,但這些只是按照主數組中的對象對數組排序,而不是對輔助數組進行排序。

希望你能幫助我

編輯:難道解決這個問題,如果我使用的NSDictionary作爲輔助陣列?

回答

4

您應該能夠使用的NSArray sortedArrayUsingComparator如果您的應用程序是針對iOS 4.0或更高版本:

NSArray *sortedArray = [mainArray sortedArrayUsingComparator: ^(id obj1, id obj2) { 
    return [[obj1 objectAtIndex:0] compare:[obj2 objectAtIndex:0]]; 
}]; 

此假設日期字段始終是內部數組的索引0。如果您使用字典並按名稱鍵入日期字段,它可能會稍微清晰一些,但如果您對日期字段始終保持索引0,那麼上述內容應該可以工作。

+0

我試圖在SDK 4.3的代碼,但我得到以下錯誤:「[__NSCFArray比較:]:無法識別的選擇發送例如「 – tharkay

+0

我在最初發布後立即對代碼示例進行了更新:您是否有機會抓取先前的版本而不是更新的版本? –

+0

是的只有您的代碼的以前版本導致錯誤代碼。 – tharkay

1

假設我理解正確的話你的數據結構,這應該是接近:

NSArray *sortedArray = [mainArray sortedArrayUsingComparator:^(id ary1, id ary2) { 
    NSArray *array1 = (NSArray *)ary1; 
    NSArray *array2 = (NSArray *)ary2; 
    NSDate *date1 = (NSDate *)[array1 objectAtIndex:0]; 
    NSDate *date2 = (NSDate *)[array2 objectAtIndex:0]; 
    return [date1 compare:date2]; 
}];