Sort array of objects by their NSDate property [duplicate]

佐手、 提交于 2019-11-29 01:44:43

问题


Possible Duplicate:
How to sort an NSMutableArray with custom objects in it?

How does one sort an array of objects by accessing their NSDate properties?

I know one can use [mutableArray sortUsingSelector:@selector(compare:)]; on an array of dates, but how does one do it by accessing a NSDate property on each element in the array, sorting the objects by earliest date to latest date?


回答1:


Thanks for all the answers, I came across this answer that solved my problem.Check NSGod's answer

Here is the code thanks to user: NSGod:

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



回答2:


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



回答3:


You can use:

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

Or see this link




回答4:


There is a method called -[NSArray sortedArrayUsingComparator:]. It takes a block in which you can implement any comparison you see fit for your objects.




回答5:


You can override the compare method in your custom class so that it compares two objects of your custom class and returns the appropriate NSComparisonResult according to the dates on the objects.

Eg:

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


来源:https://stackoverflow.com/questions/12913377/sort-array-of-objects-by-their-nsdate-property

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!