简体   繁体   中英

Sorting an array of Objective-c objects

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM