2015-04-02 142 views
0

我有一個NSMutableArray的對象。我需要根據createdDate和name對它們進行排序。 以下是我正在面對的場景: 文件的名稱類似於: Image.pdf,Image 1.pdf,Image 2.pdf,Image 3.pdf,Image 4.pdf,Image 5.pdf ...使用NSSortDescriptor對NSMutableArray iOS中的對象進行排序?

現在這些文件可以有相同的createdDate,所以當createdDate是相同的,那麼它應該按名稱降序排序。所以如果上面的文件具有相同的創建日期,那麼排序後應該顯示爲: 圖5.pdf,圖4.pdf,圖3.pdf,圖2.pdf,圖1..pdf,Image.pdf但當我使用下面的代碼Image.pdf是混亂或像這樣顯示: Image.pdf,圖片5.pdf,圖片4.pdf,圖片3.PDF,圖片3.PDF,圖像次數1.pdf

NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"createdDate" ascending:NO selector:@selector(compare:)]; 
    NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO selector:@selector(localizedStandardCompare:)]; 
    NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor1, sortDescriptor2, nil]; 
    return sortDescriptors; 

回答

0

你有我猜想錯誤的邏輯,首先你必須檢查所有文件是否有相同的日期,如果他們有相同的日期,然後只按名稱排序,否則按日期排序。

+0

您可以添加更多的洞察力,如何才能實現。 – 2015-04-02 07:09:11

+0

首先,你需要改變你的問題,並使其更具可讀性並使其理解,以便我可以提出一些建議。 – Retro 2015-04-02 07:11:26

+0

讓我說我得到3個文件的日期2015年4月2日與名稱:Image.pdf,圖片1.pdf,圖片3.pdf排序順序:圖片3.pdf,圖片1.pdf,Image.pdf現在我得到4日期03-ape-2015的更多文件名稱:Image 7.pdf,Image 8.pdf,Image 9.pdf,Image 2.pdf排序順序:Image 9.pdf,Image 8.pdf,Image 7.pdf,Image2 .pdf,Image 3.pdf,Image 1.pdf,Image.pdf – 2015-04-02 15:55:38

0

整數的字符串表示給出未定義的行爲,所以當您比較@"Image 1.pdf" < @"Image 2.pdf"時,將會有未定義的行爲。

你可以做的是嘗試先獲取附加到「圖像」的數字,然後嘗試對其進行排序。

相關問題