可能重複:
How to sort an NSMutableArray with custom objects in it?排序數組對象由他們的NSDate財產
一個人怎麼樣通過訪問他們的NSDate屬性的對象數組?
我知道可以在日期數組上使用[mutableArray sortUsingSelector:@selector(compare:)];
,但是如何通過訪問數組中每個元素的NSDate屬性,按最早日期到最近日期對對象進行排序呢?
可能重複:
How to sort an NSMutableArray with custom objects in it?排序數組對象由他們的NSDate財產
一個人怎麼樣通過訪問他們的NSDate屬性的對象數組?
我知道可以在日期數組上使用[mutableArray sortUsingSelector:@selector(compare:)];
,但是如何通過訪問數組中每個元素的NSDate屬性,按最早日期到最近日期對對象進行排序呢?
感謝所有的答案,我遇到了這個答案,解決了我的問題。 Check NSGod's answer
這是由於用戶代碼:NSGod:
NSSortDescriptor *dateDescriptor = [NSSortDescriptor
sortDescriptorWithKey:@"startDateTime"
ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor];
NSArray *sortedEventArray = [nodeEventArray
sortedArrayUsingDescriptors:sortDescriptors];
您可以重寫自定義類中的compare方法,以便它比較自定義類的兩個對象,並根據對象上的日期返回相應的NSComparisonResult。
如:
-(NSComparisonResult)compare:(YourClass*)otherObject
{
return [self.date compare:otherObject.date];
}
您可以使用:
NSArray *sortedArray = [mutableArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSDate *first = [(Person*)a birthDate];
NSDate *second = [(Person*)b birthDate];
return [first compare:second];
}];
或參閱本link
NSSortDescriptor* sortByDate = [NSSortDescriptor sortDescriptorWithKey:@"nsdatepropertyname" ascending:YES];
[mutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortByDate]];
有一個叫-[NSArray sortedArrayUsingComparator:]
方法。它需要一個塊,您可以在其中執行您認爲適合您的對象的任何比較。
要稍微更簡潔,你可以這樣寫第二行: '[mutableArray sortUsingDescriptors:@ [sortByDate];' –
要澄清更多(如果需要),'sortUsingDescriptors:'返回已排序的'NSArray'。你可能會想把它分配給另一個變量,並從[Helium3的答案](http://stackoverflow.com/a/12913805/2192331)上完成。 –