views:

303

answers:

2

So I have a custom class Foo that has a number of members:

@interface Foo : NSObject {
    NSString *title;
    BOOL     taken;
    NSDate   *dateCreated;
}

And in another class I have an NSMutableArray containing a list of these objects. I would very much like to sort this array based on the dateCreated property; I understand I could write my own sorter for this (iterate the array and rearrange based on the date) but I was wondering if there was a proper Objective-C way of achieving this?

Some sort of sorting mechanism where I can provide the member variable to sort by would be great.

In C++ I used to overload the < = > operators and this allowed me to sort by object, but I have a funny feeling Objective-C might offer a nicer alternative?

Many thanks

+3  A: 

That's quite simple to do.

First, in your Foo object, create a method

- (NSComparisonResult) compareWithAnotherFoo:(Foo*) anotherFoo;

Which will return

[[self dateCreated] compare:[anotherFoo dateCreated]];

In the end, call on the array

[yourArray sortUsingSelector:@selector(compareWithAnotherFoo:)];

Hope this helps, Paul

Pawel
Nice concise solution, though I had to change `compareWithDate` to `compare`.
davbryn