2012-10-16 27 views

回答

31

感謝所有的答案,我遇到了這個答案,解決了我的問題。 Check NSGod's answer

這是由於用戶代碼:NSGod:

NSSortDescriptor *dateDescriptor = [NSSortDescriptor 
           sortDescriptorWithKey:@"startDateTime" 
              ascending:YES]; 
NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor]; 
NSArray *sortedEventArray = [nodeEventArray 
    sortedArrayUsingDescriptors:sortDescriptors]; 
0

您可以重寫自定義類中的compare方法,以便它比較自定義類的兩個對象,並根據對象上的日期返回相應的NSComparisonResult。

如:

-(NSComparisonResult)compare:(YourClass*)otherObject 
{ 
    return [self.date compare:otherObject.date]; 
} 
8

您可以使用:

NSArray *sortedArray = [mutableArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) { 
     NSDate *first = [(Person*)a birthDate]; 
     NSDate *second = [(Person*)b birthDate]; 
     return [first compare:second]; 
    }]; 

或參閱本link

12
NSSortDescriptor* sortByDate = [NSSortDescriptor sortDescriptorWithKey:@"nsdatepropertyname" ascending:YES]; 
    [mutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortByDate]]; 
+2

要稍微更簡潔,你可以這樣寫第二行: '[mutableArray sortUsingDescriptors:@ [sortByDate];' –

+2

要澄清更多(如果需要),'sortUsingDescriptors:'返回已排序的'NSArray'。你可能會想把它分配給另一個變量,並從[Helium3的答案](http://stackoverflow.com/a/12913805/2192331)上完成。 –

0

有一個叫-[NSArray sortedArrayUsingComparator:]方法。它需要一個塊,您可以在其中執行您認爲適合您的對象的任何比較。