简体   繁体   中英

Sort array with custom objects

I'm trying to sort an array, filled with objects from a class i wrote. The class i wrote contains an NSString itself, as the "name". So what i wanna do, is to sort the array, based on the name property the objects contain. I tried the simple:

[anArray sortedArrayUsingSelecter: CaseInsensitiveCompare];

But as you can guess, it sends the caseInsensitiveCompare message to the objects itself, and it won't respond to that one.

So i'm guessing i have to make my objects able to respond to the caseInsensitiveCompare? Not quite sure how to write such a method, so any pointers would be lovely.

Thanks

You can use the method sortedArrayUsingComparator :

NSArray *sortedArray = [anArray sortedArrayUsingComparator:^(MyClass *a, MyClass *b) {
    return [a.name caseInsensitiveCompare:b.name];
}];

You can sortedArrayUsingComparator:(NSComparator)cmptr ( NSArray reference ) to sort the array. For instance, if you want to sort by the name property, do the following (assuming your class is called Person ):

NSArray *sortedArray = [anArray sortedArrayUsingComparator:^(id a, id b) {
    NSString *first = [(Person *)a name];
    NSString *second = [(Person *)b name];
    return [first caseInsensitiveCompare:second];
}];

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